首页 > Python资料 博客日记
Python解析html网页,掌握这4种方法就够了
2024-08-19 13:00:07Python资料围观83次
目录
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'
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj