前言
公司最近一个项目一直在重复一个网页操作,想起了selenium库。
之前用来模拟浏览器执行网页爬取,来跳过反扒处理。是通过完全模拟浏览器进行渲染,也就是服务器会完全认为是用户在用浏览器进行操作,这样的话也就可以进行公司的项目,自动化处理网页的操作
又称为动态渲染⻚⾯爬取
- 对于访问Web时直接响应的数据(就是response内容可⻅),我们使⽤urllib、requests或Scrapy
框架爬取。 - 对应⼀般的JavaScript动态渲染的⻚⾯信息(Ajax加载),我们可以通过分析Ajax请求来抓取信
息。 - 即使通过Ajax获取数据,但还有会部分加密参数,后期经过JavaScript计算⽣成内容,导致我们难
以直接找到规律,如淘宝⻚⾯。 - 为了解决这些问题,我们可以直接使⽤模拟浏览器运⾏的⽅式来实现信息获取。
- 在Python中有许多模拟浏览器运⾏库,如:Selenium、Splash、PyV8、Ghost等
Selenium的介绍
- Selenium是⼀个⾃动化测试⼯具,利⽤它可以驱动浏览器执⾏特定的动作,如点击,下拉,等操
作。 - Selenium可以获取浏览器当前呈现的⻚⾯源代码,做到可⻅既可爬,对应JavaScript动态渲染的信息爬取⾮常有效。
官⽅⽹址:http://www.seleniumhq.org
官⽅⽂档:http://selenium-python.readthedocs.io
中⽂⽂档:http://selenium-python-zh.readthedocs.io
安装: pip install selenium - Selenium⽀持⾮常多的浏览器,如Chrome、Firefox、Edge等,还⽀持⽆界⾯浏览器
PhantomJS。 - ChromeDriver浏览器驱动的安装:(注意浏览器版本:)
⾸先查看当前⾕歌Chrome浏览器的版本V61V67(对应2.352.38),再到下⾯⽹址下载
⽹址: https://chromedriver.storage.googleapis.com/index.html
Windows安装:将解压的⽂件: chromedriver.exe 放置到Python的Scripts⽬录下。
Mac/Linux安装:将解压的⽂件: chromedriver 放置到 /usr/local/bin/ ⽬录下
chromedriver.exe 放置到到指定目录下后webdriver.Chrome()
不放到指定目录也可以这样做:webdriver.Chrome(‘ chromedriver.exe的所在目录‘)
- PhantomJS驱动的下载地址:http://phantomjs.org/download.html
Selenium的使⽤
- 初次体验:模拟⾕歌浏览器访问百度⾸⻚,并输⼊python关键字搜索
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import Web