上面提到用requests的缺点是, 他只是个很简单的request-response工具. 遇到页面复杂的网站, 就必须对一个页面加载开始到结束干了什么有一些了解, 然后找出正真的url. 还得伪造一些headers信息. 如果是复杂的爬虫(不止是爬一个页面, 而是涉及网站登录, 多个组合动作). requests就很麻烦了.
那就用webdriver吧.
你会像见鬼一样看到程序运行后, 浏览器自动弹出来, 自动打开一个网站, 键盘自动输入了用户名密码, 然后自动一页一页的跳, 跳一页爬一页....
[显然这个工具不止能做爬虫, 还能做很多浏览器自动化操作]
下面就来展示一下这个操作.
我们来自动登录一下简书:
eeee.png
步骤1 准备工作
需要下载浏览器驱动. 我一般使用chrome浏览器, 所以就下载chrome浏览器驱动.
下载地址: http://chromedriver.storage.googleapis.com/index.html
特别注意: 浏览器驱动兼容性不是很好. 也就是用的时候可能会遇到问题, 如果百度,google查不到原因, 可以尝试换个不同version的驱动
步骤2 写代码
from selenium import webdriver
driver = webdriver.Chrome("C:\\software\\browsers\\chromedriver.exe")
driver.get("https://www.jianshu.com/sign_in") #上面截图我们看到简书登陆地址是这个
account_input = driver.find_element_by_id("session_email_or_mobile_number")
account_input.send_keys("我的账号")
password_input = driver.find_element_by_id("session_password")
account_input.send_keys("我的密码_小心泄露出去")
click_button = driver.find_element_by_id("sign-in-form-submit-btn")
click_button.click() #点下登陆按钮
特别注意, 别把自己的密码写上去还分享给别人.....
image.png
百度搜下这个问题: 发现说是driver版本问题, 换一个新版本的chromedriver.exe就好了.
其他都差不多. 了解下webdriver支持的函数. 再了解下beautifulsoap的函数....基本就这些了.