selenium_phantomjs
python, 爬虫
Word Count: 472(words)
Read Count: 2(minutes)
python爬虫实战(四):selenium+phantomJS使用
引言
phantomJS是一个没有界面的浏览器;selenium则是一个web测试工具,可以模拟用户操作。
在对phantomJS使用不熟练的时候,可以用firefox和selenium一起使用。
配置
- phantomJS直接从官网下载二进制包,解压,然后用软链接的方式添加到/usr/bin/
- 使用firefox必须添加到环境变量,同时还要下载驱动
使用
我也是刚刚开始使用,也不是很熟练。
简单了解可以参考:
实战
登录考研论坛~
这个论坛长期有验证码,而且有时候验证码正确也登陆不进去,所以如果使用phantomJS,然后将验证码截图,从终端输入的话,经常进不去。所以我使用的是firefox,直接在窗口输入验证码输入。
登陆后,可以获取cookie,之后可以直接使用requests,带着cookie一起访问需要登录的网页了~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
from selenium import webdriver from selenium.webdriver.common.keys import Keys
url_yd = 'https://note.youdao.com/signIn/index.html?&callback=http%3A%2F%2Fnote.youdao.com%2Foldweb' url_ky = 'https://i.kaoyan.com/login?url=http://bbs.kaoyan.com/forum.php'
driver = webdriver.Firefox() driver.get(url_ky)
assert '考研' in driver.title
elem_usr = driver.find_element_by_name('uname') elem_pas = driver.find_element_by_name('passwd') elem_code = driver.find_element_by_name('seccode')
elem_usr.send_keys('379548839@qq.com') elem_pas.send_keys('xxxxxx')
x = input()
print('验证码为:', x) elem_pas.send_keys(Keys.RETURN)
cookie = [item["name"] + "=" + item["value"] for item in driver.get_cookies()] cookiestr = ';'.join(item for item in cookie)
print(cookiestr)
import requests
url_hm = 'https://i.kaoyan.com/set/profile' headers = {} headers['Host'] = 'i.kaoyan.com' headers['User-Agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0' headers['cookie'] = cookiestr headers['Referer'] = 'http://bbs.kaoyan.com/forum.php'
resp = requests.get(url_hm, headers=headers)
print(resp.text)
|