type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
偶然接触到了爬虫,虽然觉得自己会很少用到这个技术,但还是写一写
📝 主旨内容
1 Selenium
1.1Selenium概述
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器。
因为Selenium可以控制浏览器发送请求,并获取网页数据,因此可以应用于爬虫领域。
Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。
1.2 浏览器驱动
浏览器驱动用于使用selenium操控本地浏览器执行自动化操作。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F83ae340c-56b8-427a-8ae5-73bd173b68d4%2FUntitled.png?table=block&id=65f75a09-d490-4ab3-afb8-ae3760295c75)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F623dd380-c7da-402e-b7fb-be3e1ccdbb64%2FUntitled.png?table=block&id=f28db60c-cec1-48db-b695-9a9b71277a3a)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F78b9ce09-f2d8-4003-80a3-ee9f9580ec90%2FUntitled.png?table=block&id=82a0408a-3b1b-40b3-81bc-2f593e4bf4d9)
1.3 基本使用
安装库
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F07d57889-da94-4bba-bd17-22eba0fd28d2%2FUntitled.png?table=block&id=03fef762-78aa-4c7e-aadd-1889a6984b6f)
或使用命令
控制浏览器自动网页
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F14725e51-9e92-4adf-9055-f2692bc57a35%2FUntitled.png?table=block&id=b429511b-436c-4712-b9c1-f8b58640297d)
调用Chrome驱动,控制浏览器打开网页
控制页面元素
2 常用操作
2.1 基本使用
2.1.1. 元素定位
获取单个元素
如果找不到相应的元素会报错
获取多个元素
访问有道翻译网站,输入单词,并获取翻译后的内容
2.1.2 内容获取
2.1.3. 窗口操作
2.1.4. 元素等待
翻页获取每页元素
现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。
为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException 的概率。所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。
隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行。
显式等待
显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了。
显示等待使用WebDriverWait完成
- driver 所创建的浏览器driver
- timeout 最长时间长度(默认单位:秒)
- poll_frequency 间隔检测时长(每)默认0.5秒
- ignored_exceptions 方法调用中忽略的异常,默认只抛出:找不到元素的异常
基础格式(webDriverWait+until+(判断条件))
until
直到调用的方法返回值为True
method:expected_conditions库中定义的方法
message :自定义报错信息
判断条件
隐式等待
隐式等待比较简单,就是设置全局元素查找的超时时间
设置的时间单位为秒,例如implicitly_wait(30),意思是超过30秒没有定位到一个元素,程序就会报错抛出异常,期间会一直轮询查找定位元素。
3 页面操作(动作链)
3.1. 鼠标及键盘操作
鼠标操作
键盘操作
3.2. 滚动条
在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载
3.3. 窗口截图
自动化脚本是由程序去执行的,因此有时候打印的错误信息并不是十分明确。如果在执行出错的时候对当前窗口截图保存,那么通过图片就可以非常直观地看到出错的原因。
4 存储数据
CSV:略
MYSQL:
📎 参考文章
注意事项
因为爬虫技术涉及面广,且技术复杂,推荐直接在网络上寻找已有数据进行处理分析,因此爬虫阶段可以只做参考。
数据网站参考:
- 作者:MasterYe
- 链接:https://www.masterye.xyz//article/spider
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。