目录
前言
在上篇文章中,我为大家介绍了Ajax的分析和抓取方式,这其实也是javascript动态渲染页面的一种方式,通过直接分析Ajax,仍然可以通过requests来实现数据的获取。
不过javascript动态渲染页面不止Ajax这种。有些网站的分页部分可能是通过javascript生成的,并非原生的HTML代码,这其中并不包含Ajax请求。再有就是淘宝页面,它即使是Ajax获取的数据,但是其Ajax接口会含有很多的加密参数,我们获取下来之后很难通过Ajax请求来得到规律。
为了解决这个问题,Python提供了很多模拟浏览器运行的库,如selenium、splash、PyV8、Ghost等。本次内容,我将为大家分享selenium的用法。有了它们就不需要为动态渲染的页面而发愁了。
是不是内心会有一点点的小激动呢?
selenium的安装
是不是会有很多小伙伴会认为这个安装有必要讲吗?不就是一个pip就可以搞定嘛,当然没有那么简单了。
selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些javascript渲染的页面来说,这招还是很有效的。
pip 安装
安装方式:我推荐pip安装
pip install selenium
验证安装
进入Python命令交互模式,导入selenium包,如果没有报错,那么就说明安装成功。
C:\Users\admin>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>>
但是这样还不够,但是这样还不够,因为我们需要用到浏览器(如Chrome、Firefox)来配合selenium工作。有了浏览器我们才能配合selenium进行页面抓取。
ChromeDriver的安装
当然,首先得下载好Chrome浏览器,可以自行百度下载并安装。
随后安装ChromeDriver。因为只有安装了ChromeDriver之后,才能驱动Chrome浏览器完成相应的操作。
- 1、准备工作
在这之前请务必确定已经安装成功Chrome浏览器。
- 2、查看版本
点击Chrome设置——>点击关于Chrome,即可查看Chrome的版本。如下图所示:
这里我的浏览器版本号是88.0。
请记住Chrome的版本号,因为等一下选择ChromeDriver版本的时候需要用到。
下载ChromeDriver
下载网址如下:
http://npm.taobao.org/mirrors/chromedriver
选择与你的浏览器相符合的版本,如下图所示:
环境变量配置
将刚刚下载好的驱动解压出来,并将其放入Python的Scripts目录下即可。如下图所示:
验证安装
配置完成之后可以在命令行输入chromedriver命令,如果输入之后出现如下图所示的界面,则说明环境变量配置好了。
selenium的基本使用介绍
简单示例
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()<