爬虫最头疼的就是异步加载和模拟登陆了,我们不禁感慨,要是全部数据都在源代码,那该有多好啊!那今天就讲解下利用Selenium模拟浏览器,让异步加载的东西原形毕露。
Selenium是一套完整的Web应用程序测试系统,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。通过pip安装即可。
pip3 install selenium
在网络爬虫中,主要运用Selenium的Webdriver模块,Webdriver没有浏览器,我们需要选择浏览器,这里选择“无头”的PhantomJS,无头就是没有界面,这就意味着开支小,速度快。我们去官网下载(这里网速不行,需要访问外国网站)。
最后,要把PhantomJS添加到环境变量,因为Python是加入了环境变量,所以把PhantomJS拷贝到Python同个文件夹下。
先上代码
from selenium import webdriver
driver = webdriver.PhantomJS()#实例化请求头
driver.get('https://www.douban.com/')#请求网站
driver.implicitly_wait(10)#隐式等待
driver.find_element_by_id('form_email').clear()
driver.find_element_by_id('form_email').send_keys('账号')#输入账号
driver.find_element_by_id('form_password').clear()
driver.find_element_by_id('form_password').send_keys('密码')#输入密码
driver.find_element_by_class_name('bn-submit').click()#登陆
print(driver.page_source)#打印源代码
看看网页源代码,可以看到我已经登陆成功了。
Selenium有个致命的缺陷,就是慢!!!所以人生无常,相见不如不见。