web自动化
- 随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。
- 现在你可以看到很多网站的数据可能都是通过接口的形式传输的,
- 或者即使不是接口那也是一些 JSON 的数据,然后经过 JavaScript 渲染得出来的。
- 这时,如果你还用 requests 来爬取内容,那就不管用了。
- 因为 requests 爬取下来的只能是服务器端网页的源码,这和浏览器渲染以后的页面内容是不一样的。
- 因为,真正的数据是经过 JavaScript 执行后,渲染出来的,数据来源可能是 Ajax,也可能是页面里的某些 Data,或者是一些 ifame 页面等。
- 不过,大多数情况下极有可能是 Ajax 接口获取的。
- 所以,很多情况我们需要分析 Ajax请求,分析这些接口的调用方式,通过抓包工具或者浏览器的“开发者工具”,找到数据的请求链接,然后再用程序来模拟。
- 但是,抓包分析流的方式,也存在一定的缺点。
- 因为有些接口带着加密参数,比如 token、sign 等等,模拟难度较大;
- 那有没有一种简单粗暴的方法,
- 这时 Puppeteer、Pyppeteer、Selenium、Splash 等自动化框架出现了。
- 使用这些框架获取HTML源码,这样我们爬取到的源代码就是JavaScript 渲染以后的真正的网页代码,数据自然就好提取了。
- 同时,也就绕过分析 Ajax 和一些 JavaScript 逻辑的过程。
- 这种方式就做到了可见即可爬,难度也不大,同时适合大批量的采集。
- Selenium:
- 作为一款知名的Web自动化测试框架,支持大部分主流浏览器,提供了功能丰富的API接口,常常被我们用作爬虫工具来使用。
- 然而selenium的缺点也很明显
- 速度太慢
- 对版本配置要求严苛
- 最麻烦是经常要更新对应的驱动
(一)selenium
【1】安装
- 由于sleenium4.1.0需要python3.7以上方可支持,请注意自己的python版本。
方式一:pip安装
- Python3.x安装后就默认就会有pip(pip.exe默认在python的Scripts路径下),
- 打开 cmd,使用pip安装。
pip install selenium
- 首次安装会有进度条,而且装出来是多个包(依赖于其他第三方库)。
- 如果安装慢(默认连接官网),可以指定国内源。
pip install selenium -i https://mirrors.aliyun.com/pypi/simple/
方式二:Pycharm安装
- Pycharm-File-Setting-Project:xxxx-Python Interpreter,点击+号
chrome驱动
- 根据你电脑的不同自行选择吧.
- win64选win32即可.
- 把你下载的浏览器驱动放在python解释器所在的文件夹
【2】quick start
-
selenium最初是一个自动化测试工具,
- 而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题
- selenium本质是通过驱动浏览器,完全模拟浏览器的操作,
- 比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器
-
安装pip包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
- 案例:
from selenium import webdriver
from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SEL