selenium:
selenium 是python的一个强大的库,可以用几行代码,控制浏览器,做出自动打开,输入,点击等操作,就像是有一个真正的用户在操作一样。
(1) 当遇到验证码很复杂的网站时,selenium允许让人去手动输入验证码,然后把剩下的操作交给机器。
(2)对于那些交互复杂,加密复杂的网站,selenium问题简化,爬动态网页如静态网页一样简单
(静态网页:HTML,网页源代码中就包含了所有信息,因此,网页地址栏的URL就是网页源代码的URL
动态网页:要爬取的数据不在HTML源代码中,而是在json中,不能直接使用地址栏的URL了,而需要找到json数据的真实URL,这种就是动态网页。)
不论数据存在哪里,浏览器总是会向服务器发起各式各样的请求,当这些请求完成后,他们会一起组成开发者工具的Elements中所展示的,渲染完成的网页源代码。
安装selenium库:
selenium的脚本可以控制所有常见浏览器的操作,在使用之前,需要安装浏览器的驱动。
浏览器驱动下载安装教程:
Google浏览器驱动安装
设置浏览器引擎:
获取数据:
解析和提取数据:
BeautifulSoup解析网页源代码,然后提取其中的数据。
selenium库同样也具备解析数据,提取数据的能力。它和BeautifulSoup的底层原理一致
他们俩的不同之处:selenium所提取的是Elements中的所有数据,而BeautifulSoup所解析的则只是Network中第0个请求的响应。
用selenium把网页打开,所有信息就都加载到Elements那里,之后,就可以把动态网页用静态网页的方法爬取
WebElement类对象与Tag对象类似,它也有一个方法,可以通过属性名提取属性的值,这个方法是.get_attribute()
find_element_by_与BeautifulSoup中的find类似,可以提取出网页中第一个符合要求的元素;既然BeautifulSoup有提取所有元素的方法find_all,selenium也同样有方法。
除了用selenium解析与提取数据,还有一种解决方案,那就是,使用selenium获取网页,然后交给BeautifulSoup解析和提取。
比如这个网页就有两个输入框,和一个提交按钮,就可以用
相关代码:
以上这种设置方法可以让你看到浏览器的操作过程。
在本地的操作环境中,你还可以把自己电脑中的Chrome浏览器
设置为静默模式,也就是说,让浏览器只是在后台运行,
并不在电脑中打开它的可视界面。
因为在做爬虫时,通常不需要打开浏览器,爬虫的目的是爬到数据,
而不是观看浏览器的操作过程,在这种情况下,就可以使用浏览器的静默模式