通过使用selenium,可以实现模拟浏览器的效果,针对使用JS的网站可以说是不得已的做法。

1 环境基础

但使用前,首先需要安装浏览器并配置对应的驱动,例如chrome浏览器安装后,需要下载对应版本的chromedriver文件,本文介绍的是window环境的python操作,所以对应的驱动文件可直接复制到python对应的文件下。 由于chrome浏览器的驱动与浏览器本身的版本关系太过麻烦,因此作者使用火狐,只需要下载最新版的火狐浏览器,与最新的geckodriver驱动文件即可,同样驱动文件复制到python文件中。 接下来可以使用webdriver实现对浏览器的操作。由于不需要浏览器显示,因此下面的代码中加入了headless参数,使浏览器在后台运行。

2 网页元素抓取

webdriver中针对不同的网页元素提供了对应的抓取方法,如下图:

DDx2Ke.png(摘自《python从入门到实践》)

3 禁止加载

出于信息爬取效率的考虑,一些网页中的图片等信息并非我们所需,且这类信息的加载相对而言较为耗时。因此,要求禁止浏览器加载这类信息,不同浏览器禁止加载的手段略有不同,针对火狐,下面的代码给出了禁止CSS,图片,JavaScript加载的方法。