从这一章开始,咱们将探讨爬虫的进阶部分,难度比起之前的初级也是有所提升。
一、动态HTML技术
二、Selenium+chromedriver介绍
三、Selenium获取动态数据基本操作
一、动态HTML技术
1.动态HTML技术了解
这是几种动态页面技术:
1.1 JS
它是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页。
1.2 jQuery
jQuery是一个快速、简介的JavaScript框架,封装了JavaScript常用的功能代码。
1.3 ajax
ajax可以使用网页实现异步更新,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
2.如何获取ajax数据
(1)直接分析ajax调用的接口,然后通过代码请求这个接口。
(2)使用Selenium+chromedriver模拟浏览器行为获取数据。
这是两种方法的对比:
方式 | 优点 | 缺点 |
---|---|---|
分析接口 | 直接可以请求到数据。不需要做一些解析工作。代码量少,性能高。 | 分析接口比较复杂,特别是一些通过js混淆的接口,要有一定的js功底。容易被发现是爬虫。 |
selenium | 直接模拟浏览器的行为。浏览器能请求到的,使用selenium也能请求到。爬虫更稳定。 | 代码量多。性能低。 |
selenium能够模拟浏览器的行为,进行一系列的操作。相比之下更为容易。
二、Selenium+chromedriver介绍
1.Selenium
selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。
chromedriver是一个驱动Chrome浏览器的驱动程序,使用它才可以驱动浏览器。当然针对不同的浏览器有不同的driver。
以下列出了不同浏览器及其对应的driver:
Chrome:https://sites.google.com/a/chromium.org/chromedriver/downloads
Firefox:https://github.com/mozilla/geckodriver/releases
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
2.chromedriver
咱们需要下载chromedriver
下载地址:https://www.cnblogs.com/JHblogs/p/7699951.html
安装总结:https://www.jianshu.com/p/a383e8970135
3.安装Selenium和chromedriver
安装Selenium:
pip install selenium
安装chromedriver:下载完成后,放到不需要权限的纯英文目录下就可以了。
三、Selenium获取动态数据基本操作
1.基本过程
from selenium import webdriver
from selenium.webdriver.common.by import By
# 实例化浏览器
driver = webdriver.Chrome()
# 发送请求
driver.get('https://www.baidu.com')
# 窗口最大化
driver.maximize_window()
# 退出当前窗口
driver.close()
# 退出浏览器
driver.quit()
跟之前的原理差别不大,也是先赋予一个selenium对象,再对对象进行一系列的操作,获取到自己想要的数据。
2.定位元素
find_element_by_id:是根据id来查找某个元素。
# 方法1
submitTag = driver.find_element_by_id('su')
# 方法