一、etree

etree.parse () 方法:读取并解析本地 html 文件

使用绝对路径 xpath 语法,提取 html 页面标题标签内的文本内容和body 下指定 div 标签内的 p 标签文本

xpath 下标索引定位节点,提取页面第 1 个 div 标签下 p 标签的文本.

xpath 节点计数从 1 开始 xpath 下标索引定位节点,提取页面第 2 个 div 标签下 p 标签的文本

多层嵌套下标定位,提取第 2 个 div 下、第 2 个 p 标签里第 2 个子节点的文本

按 class 属性精准匹配节点,提取 class 为 song 的 div 下指定 p 标签文本

//xpath 语法:跨层级全局搜索文档内所有对应节点,不用写完整绝对路径

/text () 语法:只获取当前标签直系子节点的文本内容

//text () 语法:获取当前标签下所有嵌套子孙节点的全部文本内容

@属性名 语法:提取标签指定属性的值,比如图片 src、链接 href 地址

二、爬取图片

导入 os 库,用于创建文件夹、处理文件路径,实现本地文件操作

定义全局变量 n,作为图片的序号计数器,给下载的图片自动命名

检查当前目录下是否存在名为 Picture 的文件夹,如果文件夹不存在,则创建该文件夹,用于存储爬取到的图片

定义请求头字典,用于模拟浏览器请求,使用 fake_useragent 随机生成一个 User-Agent,伪装成真实浏览器的请求。这需要导入 fake_useragent 库,用于随机生成不同的 User-Agent,模拟浏览器请求,降低被反爬机制识别的概率

拼接壁纸网站的分页 URL,实现批量爬取多页数据,其中i为页

向目标 URL 发送 GET 请求,携带请求头,获取网页响应

获取响应的文本内容,即网页的 HTML 源码,结果返回给result。使用 etree.HTML() 方法解析 HTML 源码,生成文档树对象,用于后续 XPath 提取

使用 XPath 语法,提取 id 为 pics-list 的 div 标签下所有的 p 标签,得到图片节点列表

遍历上一步提取到的所有 p 标签节点,逐个处理图片链接。

使用 XPath 语法,提取当前 p 标签下 a 标签内 img 标签的 src 属性值,拼接图片的完整 URL,补全网站域名,得到可直接访问的图片地址

向图片的完整 URL 发送 GET 请求,获取图片的二进制数据。

获取响应的 content 属性,即图片的二进制内容

以二进制写入模式(wb)打开 Picture 文件夹下的图片文件,文件名为自增的序号,格式为 .jpg

将图片的二进制数据写入本地文件,完成图片的下载保存

三、打开网页

导入 selenium 库中的 webdriver 模块,它是驱动浏览器的核心组件,用于控制浏览器执行各种自动化操作。

导入 Edge 浏览器的 Options 类,通过它可以配置浏览器的启动参数,如指定浏览器路径、设置无头模式、禁用弹窗等。

创建一个 Options 实例对象,用于存放后续配置的 Edge 浏览器启动选项。

指定 Edge 浏览器的可执行文件路径,让 WebDriver 知道要启动哪个浏览器程序,确保能正确找到并打开本地安装的 Edge 浏览器。

使用之前配置好的 Options 实例初始化 Edge 浏览器驱动,创建一个浏览器实例对象,后续所有操作都通过这个对象来执行。

调用 get () 方法,让浏览器打开指定的 URL 地址

打开多个网页

使用 execute_script () 方法,在浏览器中执行 JavaScript 代码,调用 window.open 函数,在新标签页中打开网页。

获取渲染后的网页代码

在 Selenium 爬虫里,“渲染后的网页代码”,就是浏览器执行完所有 JavaScript 脚本、把页面完全加载出来之后,最终呈现在用户眼前的完整 HTML 代码

我们平时用requests.get()拿到的只是网站服务器直接返回的 “原始 HTML”,很多动态内容(比如通过 JS 加载的评论、数据、列表)还没被渲染出来,所以这些内容在原始代码里是看不到的。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐