纪录一下写豆瓣爬虫的过程和一些心得
selenium 的介绍
selenium 是一款自动化测试利器,可以自动化模拟人的浏览器操作行为,所以也可以用于网络爬虫。
不过这里主要讲一讲怎样用selenium来模拟登录,并持久化cookie,然后用requests爬取页面。
selenium 的安装及配置
安装
直接安装 selenium
pip install selenium
配置 webdriver
使用 selenium 前我们首先要配置浏览器的 webdriver 这边主要提供3种常用浏览器的配置页面:
⚠️ 下载前一定要查看一下自己浏览器的版本,下载适配版本的 webdriver
配置 chromedriver(Mac版本)
以chromedriver为例,在下载好后,我们将 chromedriver 档案放入到:/usr/local/bin/ 这个路径下面。
具体的步骤:打开一个 Finder -> shift+command+G -> 输入路径 /usr/local/bin/ 按下return -> 将 chromedriver 放入
⚠️ 可能会遇到的error:
“chromedriver” cannot be opened because the developer cannot be verified. Unable to launch the chrome browser on Mac OS
解决办法可以看这个Blog按照上面的步骤输入就可以正常运行了。
selenium 的一些基本用法
控制浏览器
1 | from selenium import webdriver |
使用IP代理,通常不需要都行
1 | chrome_option = webdriver.ChromeOptions() |
等待网页加载
1 | driver.implicitly_wait(5) #最长等待5秒,记载完成后自动跳过 |
打开网页
1 | driver.get(url) # 需要打开的网页 |
点击网页节点
1 | driver.find_element_by_xpath('这里放网页xpath路径').click() |
输入内容
1 | driver.find_element_by_xpath('这里放网页输入框的xpath路径').send_keys('输入词') |
获取文本
1 | driver.find_element_by_xpath('网页中文本xpath路径').text #直接获取某个具体文本 |
网页下拉
1 | js="var q=document.documentElement.scrollTop=10000000" #滚动条,数值为每次下拉的长度,不叠加,以浏览器底部为最大值 |
使用 selenium 模拟豆瓣登录的 demo
因为selenium是模拟人的一个登录的行为,所以首先要厘清一下我们在做登录时的一个逻辑:
- 打开浏览器
- 打开url
- 在“短信登录”和“密码登录”中选择“密码登录”(因为短信登录会有经常报错的问题)
- 定位到“帐号”和“密码”(查看wed的html文档)
- 输入“帐号”和“密码”
- 点击“登录豆瓣”
需要import的模块主要就是两个:
1 | from selenium import webdriver |
👆就完成了一个简单的用户登入的行为