Selenium基础入门及实践
1. 环境
操作系统:Windows10
Python版本:3.6
2. 需求分析
这里就要用到一个爬虫利器Selenium,它是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。另外对于一些 JavaScript 渲染的页面来说,此种抓取方式非常有效。
3. Selenium的安装
Selenium 的安装很简单,可采用如下方式。
pip install selenium
Selenium安装好之后,并不能直接使用,它需要与浏览器进行对接。这里拿Chrome浏览器为例。若想使用Selenium成功调用Chrome浏览器完成相应的操作,需要通过ChromeDriver来驱动。
4. ChromeDriver的安装
这里是ChromeDriver的官方下载地址。
链接:
https://chromedriver.storage.googleapis.com/index.html
我们在下载之前先来确认下我们使用的Chrome浏览器版本。
通过ChromeDriver的下载链接,找到与之对应的Chrome浏览器版本,根据你电脑系统的平台类型进行下载。
下载完成之后,解压,将其放置在Python安装路径下Scripts文件夹中即可
上述操作结束后,我们执行如下命令,测试一下
from selenium import webdriver
# 打开Chrome浏览器
browser = webdriver.Chrome()
代码执行后,若成功打开了浏览器,则证明你的ChromeDriver安装的没问题,可以正常愉快地使用Selenium了。
接下来,我们先来使用程序来爬取数据
爬取数据
from selenium import webdriver, common
url = 'https://www.mi.com/index.html'
# option = webdriver.ChromeOptions()
#
# option.add_argument('headless')
browser = webdriver.Chrome()
browser.get(url)
print(browser.page_source)
设置页面加载超时
设置 browser.get(url) 的超时需要调用 browser.set_page_load_timeout()。例如,下面的示例将打开 google.com 页面的超时设为 3 秒。
browser.set_page_load_timeout(3)
注意:WebDriver.implicitly_wait() 只能设置查找元素和执行命令的超时,对页面加载操作的超时无效。
注意:selenium 默认的页面加载超时为 300 秒。selenium 中所有超时方法的参数单位都为秒。内部为将参数乘1000 转成毫秒。
WebDriver.implicitly_wait() 设置的超时并不适用于用户操作导致的页面重新加载或页面脚本对 DOM 整体结构的改变,遇到这两种情况考虑适用其他等待条件。
https://zhuanlan.zhihu.com/p/446257218