Python 爬虫教程 02
1.测试网址
2.编写代码
2.1 代码示例
1 | import requests |
在很多时候,建议先把请求到的网页内容保存到本地(如上面代码所示),因为有时候解析数据无法一次性解析成功,那就会再向网页发送请求,这样不断的去访问服务器,就容易被服务器检测到是爬虫。
3.lxml 基础使用
3.1 XPath 基本语法
/:从根节点选择。根节点是一个 XML 或 HTML 文档的最顶层节点,所有其他元素都是它的子节点。//:选择文档中的所有符合条件的节点,不论它们在文档的什么位置。.:当前节点。..:父节点。@:选择属性。[ ]:筛选器,添加条件。text():选择文本节点。
3.2 示例说明
假设有如下 HTML 结构,<html>是根节点:
1 | <html> |
3.3 使用 XPath 提取数据
- 提取所有行的
<td>内容:
1 | root = etree.HTML(html) |
//tr 表示选择文档中所有的 <tr> 节点,不论它们在文档的哪个层级。
- 提取某个特定列的数据:
1 | status_list = root.xpath('//td[@class="status"]/text()') |
//td[@class="status"]:选择所有 class 为 “status” 的<td>节点。/text():选择这些节点的文本内容。
结果:
1 | ['在线', '离线', '在线'] |
- 结合
for循环逐行提取多个列的内容:
1 | trs = root.xpath('//tr') |
./td[@class="status"]/text():从当前行的<td>中选择 class 为 “status” 的列。./td[2]/text():选择当前行的第二个<td>节点的文本内容。
输出:
1 | 状态: 在线, 数字: 123 |
3.4 XPath 实用技巧
使用属性选择节点:
//td[@class="status"]选择所有 class 为 “status” 的<td>。//a[@href]选择带有href属性的所有<a>标签。
使用索引选择特定节点:
//tr[1]选择第一个<tr>节点。//td[2]选择当前<tr>中的第二个<td>节点。
选择文本和属性:
//td/text()选择<td>内的文本。//a/@href选择所有<a>标签的href属性。
条件筛选:
//tr[td[1]="在线"]选择第一列文本为“在线”的行。
- Title: Python 爬虫教程 02
- Author: loskyertt
- Created at : 2024-10-17 14:41:00
- Updated at : 2025-02-17 04:36:55
- Link: https://redefine.ohevan.com/2024/10/17/02Python爬虫/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments