Python解析html网页,掌握这4种方法就够了
图灵学者 2024-08-31 11:05:02 阅读 81
目录
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安装此库。如果你还没有安装 ,可以通过运行以下命令来进行安装:
<code>pipinstallbeautifulsoup4
同时,由于BeautifulSoup通常与requests库搭配使用来获取网页内容,因此建议也安装requests:
pipinstallrequests
导入这两个库的方式如下:
frombs4importBeautifulSoup
importrequests
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')code>
clean_text = story_paragraph.get_text(separator=' ', strip=True)code>
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环境中运行:
<code>pipinstalllxml
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]code>:选取所有class属性为
content
的<div>
元素内的第一个<p>
元素。
例如,要选择所有带有的
div
元素 ,可以使用:
from lxml import etree
html = """
<div >
<p>First paragraph.</p>
</div>
<div >
<p>Second paragraph.</p>
</div>
<div >
<p>I am main.</p>
</div>
"""
root = etree.HTML(html)
elements = root.xpath('//div[@]')
for element in elements:
print(etree.tostring(element))
输出:
b'<div >\n <p>First paragraph.</p>\n</div>\n'
b'<div >\n <p>Second paragraph.</p>\n</div>\n'
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。