python 异步爬取库selenium使用记录
简介
- 1 在做基于python的知乎用户信息特征爬虫系统中,遇到了个人信息需要点击 查看详细资料后 页面才能渲染出所有我所需要的用户信息。对于基于异步请求的动态网页爬虫,在研究了相关资料后发现这个暴力牛逼的包selenium,相对简单实用。简单来说就是模拟人为对浏览器的动作,比如:点击事件,填写表单等。这样就能克服操作我们传统爬虫只能爬取静态网页,得不到异步请求渲染后的网页信息。具体安装如下:
安装selenium(python3.5,window10环境下)
- 1.通过pip安装
pip install selenium
2.通过下载selenium安装包
selenium连接
https://pypi.python.org/pypi/selenium
解压,cmd进入目录:
E:\selenium\selenium2.53.5> python3 setup.py install
安装浏览器驱动chromedriver(以google为例)
1.下载Chromedriver
下载地址:http://chromedriver.storage.googleapis.com/index.html
注意:先查看notes.txt,Chromedriver版本和浏览器版本一定要对应。否者会出现各种异常报错。
2.解压chromedriver.zip文件
将里面的chromedriver.exe文件拷贝到谷歌浏览器的安装目录下:C:\Program Files (x86)\Google\Chrome\Application
3.配置环境变量
打开:我的电脑->属性->高级系统设置->环境变量
打开path
在最后面添加 ;C:\Program Files (x86)\Google\Chrome\Application测试
打开python编辑器 如pyCharm 编辑代码:
chromedriver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
os.environ[“webdriver.chrome.driver”] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get(‘http://www.baidu.com‘)如果跳出google浏览器,且为百度页面则安装成功。不知道为什么其他博客只需要:
driver = webdriver.Chrome()
driver.get(‘http://www.baidu.com‘)
便能成功。而且我环境变量也已经配置。不知道啥原因,有待研究下。
———————————————————————————————
selenium使用记录
模拟知乎登录(具体使用查看文档)
###a先实例化一个driver
chrome_driver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
os.environ["webdriver.chrome.driver"] = chrome_driver driver = webdriver.Chrome(chrome_driver)
###b 登录知乎,亲自测试可行:
driver.get(“http://www.zhihu.com“) #打开知乎我们要登录
time.sleep(2) #让操作稍微停一下
driver.find_element_by_link_text(‘登录’).click() #找到‘登录’按钮并点击
time.sleep(2) # 找到输入账号的框,并自动输入账号 这里要替换为你的登录账号
driver.find_element_by_name(‘account’).send_keys(‘你的账号’)
time.sleep(2)# 密码,这里要替换为你的密码
driver.find_element_by_name(‘password’).send_keys(‘你的密码’)
time.sleep(2)# 输入浏览器中显示的验证码,这里如果知乎让你找烦人的倒立汉字,手动登录一下,再停止程序,退出#浏览器,然后重新启动程序,直到让你输入验证码
yanzhengma=input(‘验证码:’) #现在好像不需要验证码
driver.find_element_by_name(‘captcha’).send_keys(yanzhengma) # 找到登录按钮,并点击
driver.find_element_by_css_selector(‘div.button-wrapper.command > button’).click()
- ###c 使用driver.page_source 可以获得实际操作后的页面源码。而requests库只能获得打开连接的静态网页。
如:html = driver.page_source
接下来就可以使用BeautifulSoup库来自由操作了。