Python解析html网页,掌握这4种方法就够了

本文介绍了Python中解析HTML的四种主流方法:BeautifulSoup、lxml、PyQuery和requests-HTML。分别阐述了它们的安装、基础用法、数据提取技巧以及在处理动态页面上的优势。对于不同场景,如静态内容提取、性能敏感应用、DOM操作和现代网页渲染,提供了选择依据和最佳实践。
摘要由CSDN通过智能技术生成

目录

1、方法一:BeautifulSoup库 🍜

1.1 BeautifulSoup安装与导入

1.2 HTML文档解析基础

1.3 CSS选择器实战

1.4 数据提取与清洗技巧

2、方法二:lxml库 📄

2.1 lxml简介与安装

2.2 XPath语法入门

2.3 快速定位元素

2.4 页面结构分析实战

2.5 提高性能:迭代器与XPath优化

2.6 高效数据抽取策略

3、方法三:PyQuery库 🌐

3.1 PyQuery安装

3.2 类jQuery语法解析HTML

3.3 数据筛选与转换

3.4 数据提取与转换技巧

3.5 动态页面处理技巧

4、方法四:requests-HTML库 🌌

4.1 异步HTML解析新星

4.1 异步HTML解析新星

4.2 安装与初步使用

4.3 使用AsyncIO提升效率

4.4 使用Session

4.5 JavaScript渲染页面处理

4.6 数据抓取案例

5、综合运用与性能比较 🏎️

5.1 不同场景下的最佳选择

5.2 性能考量与选择依据

5.3 安全与合规性考虑

6、总结 🚀



1、方法一:BeautifulSoup库 🍜

1.1 BeautifulSoup安装与导入

BeautifulSoup 是 Python 中用于解析 HTML 和 XML 文档的库,以其灵活强大的选择器和简洁的API广受开发者喜爱。在Python中使用BeautifulSoup进行HTML解析之前,首先需要通过pip安装此库。如果你还没有安装 ,可以通过运行以下命令来进行安装:

pip install beautifulsoup4

同时,由于BeautifulSoup通常与requests库搭配使用来获取网页内容,因此建议也安装requests:

pip install requests

导入这两个库的方式如下:

from bs4 import BeautifulSoup
import requests

1.2 HTML文档解析基础

BeautifulSoup能够将复杂的HTML文档转换为一个复杂的树形结构,每个节点都是Python对象。这使得我们可以轻松地遍历文档、搜索特定部分以及提取所需数据。例如,解析一个简单的HTML字符串:

url = 'https://blog.csdn.net/xyh2004/article/details/139481315'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}
response = requests.get(url=url,headers=headers)
html_doc = response.text

soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify())

1.3 CSS选择器实战

CSS选择器是一种强大的工具,用于定位和选取HTML中的元素。BeautifulSoup支持大多数CSS选择器。以下是如何使用它们的例子:

# 选取所有的段落元素
paragraphs = soup.select('.htmledit_views p')
for p in paragraphs:
    print("选取所有的段落元素:",p.text)

# 选取具有特定类名的元素,默认寻找第一次出现的
title = soup.select_one('.title-article')
print("选取具有特定类名的元素:",title.text)

# 选取具有特定属性的元素
links = soup.select('a[href]')
for link in links:
    print('选取具有特定属性的元素:',link['href'])

# 遍历所有的 `<a>` 标签
for link in soup.find_all('a'):
    print("遍历所有的 `<a>` 标签",link.get('href'))

1.4 数据提取与清洗技巧

在提取数据后,可能需要进行一些清洗,去除多余的空白字符、标签等。BeautifulSoup提供了直接访问和修改文本的方法:

# 提取并清洗文本内容
story_paragraph = soup.find(class_='aside-box')
clean_text = story_paragraph.get_text(separator=' ', strip=True)
print("提取并清洗文本内容:",clean_text)

# 移除特定标签
for script in soup(['script', 'style']):
    script.extract()
# 现在打印文档 ,会发现脚本和样式已被移除
print(soup.prettify())

以上展示了使用BeautifulSoup解析HTML文档的基本方法,包括安装、基础解析、CSS选择器的应用以及数据的提取与清洗技巧。掌握这些技能,你将能够有效地从网页中提取有价值的信息。

2、方法二:lxml库 📄

2.1 lxml简介与安装

lxml 是一个高效且功能丰富的Python库,用于处理XML和HTML文档。它结合了C语言库libxml2和libxslt的强大功能,提供了XPath和XSLT的支持,使得解析和操作XML/HTML数据变得快速且简单。要安装lxml,只需在你的Python环境中运行:

pip install lxml

2.2 XPath语法入门

XPath(XML Path Language)是一种在XML文档中查找信息的语言 ,同样适用于HTML。它允许你通过元素和属性来定位特定的节点。以下是几个基本的XPath表达式示例:

  • • //title:选取文档中的所有<title>元素。

  • • /html/body/p:选取根元素下<html>子元素内的<body>子元素 ,再选取其内的所有<p>元素。

  • • //a[@href]:选取所有带有href属性的<a>元素。

  • • //div[@class='content']/p[1]:选取所有class属性为content<div>元素内的第一个<p>元素。

例如,要选择所有带有 class="content" 的 div 元素 ,可以使用:

from lxml import etree

html = """
<div class="content">
    <p>First paragraph.</p>
</div>
<div class="content">
    <p>Second paragraph.</p>
</div>
<div class="main">
    <p>I am main.</p>
</div>
"""

root = etree.HTML(html)
elements = root.xpath('//div[@class="content"]')
for element in elements:
    print(etree.tostring(element))

输出:

b'<div class="content">\n    <p>First paragraph.</p>\n</div>\n'
b'<div class="content">\n    <p>Second paragraph.</p>\n</div>\n'

 

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值