跳至页脚内容
PYTHON 帮助

使用 Python 中的 BeautifulSoup 进行网站抓取

Python开发人员现在可以创建动态PDF并简化网络抓取,这要归功于Beautiful Soup和IronPDF的结合。 开发人员可以轻松且准确地从网络资源中提取所有数据,Beautiful Soup以其解析HTML和XML文件的技能而闻名。 同时,IronPDF是一个强大的工具,具有顺畅的集成和强大的功能,可以用来以编程方式生成PDF文档。

结合这两个强大的工具,开发人员可以自动化生成发票、归档内容和生成报告等流程,以无与伦比的效率完成。 我们将在此入门的研究中深入探讨Beautiful Soup Python库和IronPDF的细微差别,突显它们各自的优点及其结合时的革命性潜力。 跟随我们一同探索充分利用网络抓取和PDF创建为Python开发人员带来的机遇。

Beautiful Soup Python(如何为开发人员工作):图1 - Beautiful Soup主页

HTML/XML解析

Beautiful Soup非常擅长解析HTML标签和XML文档,将它们转换成可操作的解析树,以便于探索。 它能宽容地处理不正确的HTML元素,因此开发人员可以在不必担心解析问题的情况下处理不完整的数据。

在HTML页面上查找特定项目

Beautiful Soup的用户友好导航技术使在HTML页面上查找特定项目变得简单。 使用比如searchfind_allselect等技术,开发人员可以在树结构中导航,并基于标签、属性或CSS选择器准确定位元素。

访问标签特性和内容

一旦在解析树中定位到某个元素,Beautiful Soup提供便捷的方法来检索其特性和内容。 开发人员可以获取与标签相关的任何自定义属性,以及href属性以及其他如classid。 为了进一步处理,他们还可以访问元素内部的HTML元素或文本内容。

搜索和过滤

Beautiful Soup具有强大的搜索和过滤功能,使开发人员可以根据不同的标准定位组件。 他们还可以使用正则表达式来实现更复杂的匹配模式。 他们可以搜索特定标签,并根据特性或CSS类过滤项目。 您可以通过requests库来抓取网页以进行解析,从而进一步简化这一流程。 这种灵活性有助于从HTML/XML文档中提取特定数据。

导航解析树

在文档结构内,开发人员可以在解析树中上下或左右移动。 Beautiful Soup提供了对父元素、兄弟元素和子元素的访问权限,从而更容易详细地探索文档层次结构。

数据提取

Beautiful Soup的基本功能是能够从HTML和XML文本中提取数据。 从网页中很容易地提取文本、链接、图片、表格和其他内容项。 通过集成导航、过滤和遍历算法,他们可以从复杂的文档中提取某些数据点或整个内容片段。

处理编码和实体

Beautiful Soup自动处理字符编码和HTML网页实体,确保即使编码出现问题或有特殊字符,也能准确处理文本数据。 通过消除对实体解码或手动编码转换的需求,这一功能使得处理来自不同来源的网络材料更加容易。

解析树修改

Beautiful Soup不仅能够提取数据,还允许开发人员动态更改解析树。 在需要时,他们可以重组文档结构,添加、删除或更改标签和属性,或增加新元素。 这一功能使在文档内执行操作成为可能,例如数据清理、内容增强和结构变更。

为Python创建和配置Beautiful Soup

选择解析器

为处理HTML或XML文档,Beautiful Soup需要一个解析器。 默认情况下使用Python内置的html.parser。 为了提高效率或与特定文档兼容性更好,您可以指定不同的解析器,如lxmlhtml5lib。 在构建BeautifulSoup对象的过程中,您可以提供解析器:

from bs4 import BeautifulSoup

# Specify the parser (e.g., 'lxml' or 'html5lib')
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'lxml')
from bs4 import BeautifulSoup

# Specify the parser (e.g., 'lxml' or 'html5lib')
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'lxml')
PYTHON

设置解析选项

Beautiful Soup提供了一些选项来更改解析操作的方式。 例如,您可以关闭将HTML实体转换为Unicode字符的功能,或者启动更严格的解析选项。 创建BeautifulSoup对象时,将这些设置作为参数提供。 以下是如何关闭实体转换的示例:

from bs4 import BeautifulSoup

# Disable entity conversion
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', convert_entities=False)
from bs4 import BeautifulSoup

# Disable entity conversion
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', convert_entities=False)
PYTHON

编码检测

Beautiful Soup自动尝试确定文档的编码。 但在某些情况下,尤其是内容不明确或存在编码问题时,可能需要明确指定编码。 在创建BeautifulSoup对象时,您可以选择定义编码:

from bs4 import BeautifulSoup

# Specify the encoding (e.g., 'utf-8')
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8')
from bs4 import BeautifulSoup

# Specify the encoding (e.g., 'utf-8')
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8')
PYTHON

输出格式化

默认情况下,Beautiful Soup会在解析内容中添加换行和缩进,以便于阅读。 另一方面,在构建BeautifulSoup对象时,您可以通过提供formatter选项来更改输出格式。 作为示例,要关闭格式美化:

from bs4 import BeautifulSoup

# Disable pretty-printing
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', formatter=None)
from bs4 import BeautifulSoup

# Disable pretty-printing
html_content = "<html>Your HTML content here</html>"
soup = BeautifulSoup(html_content, 'html.parser', formatter=None)
PYTHON

NavigableStringTag子类

您可以更改Beautiful Soup用于NavigableStringTag对象的类。 这可以帮助扩展Beautiful Soup的能力或与其他库集成。 在构建BeautifulSoup对象时,您可以传递NavigableStringTag的子类作为参数。

开始

什么是 IronPDF? IronPDF是一个强大的.NET库,用于在C#、VB.NET和其他.NET语言中以编程方式生成、编辑和修改PDF文档。 由于其为开发人员提供了丰富的功能集,以动态生成高质量的PDF,因此它是许多应用的流行选择。 ![Beautiful Soup Python(如何为开发人员工作):图2 - IronPDF主页](/static-assets/pdf/blog/beautiful-soup-python/beautiful-soup-python-2.webp) ### IronPDF的功能 - **PDF生成**:通过IronPDF,开发人员可以将HTML标签、文本、图片和其他文件格式转换为PDF或从头开始创建PDF文档。 这一功能对于动态创建报告、发票、收据和其他文件非常有用。 - **将HTML转换为PDF**:IronPDF允许开发人员轻松将HTML结构(包括JavaScript和CSS样式)转换为PDF文档。 这使得可以从HTML模板、网页和动态创建的材料中生成PDF。 - **编辑和操作PDF文档**:IronPDF为现有PDF文档提供了一系列广泛的编辑和操作功能。 开发人员可以合并多个PDF文件,将它们分割成独立文件,提取页面,并添加书签、注释和水印等内容以根据其规格更改PDF。 #### 安装 首先必须安装IronPDF和Beautiful Soup。可以使用Python的包管理器Pip来实现这一步。 ```bash pip install beautifulsoup4 pip install ironpdf ``` #### 导入库 然后,使用所需的库导入您的Python脚本。 ```python from bs4 import BeautifulSoup from ironpdf import IronPdf ``` #### 使用Beautiful Soup进行网络抓取 利用Beautiful Soup从网站提取信息。假设我们希望从网页中检索一篇文章的标题和内容。 ```python # HTML content of the article html_content = """ Hello

IronPDF

This is a sample content of the article.

""" # Create a BeautifulSoup object soup = BeautifulSoup(html_content, 'html.parser') # Extract title and content title = soup.find('title').text content = soup.find('h1').text + soup.find('p').text print('Title:', title) print('Content:', content) ``` #### 使用IronPDF生成PDF 现在让我们利用IronPDF来创建一个包含提取数据的PDF文档。 ```python from ironpdf import IronPdf, ChromePdfRenderer # Initialize IronPDF # Create a new PDF document renderer = ChromePdfRenderer() pdf = renderer.RenderHtmlAsPdf( "{}

{}

{}

".format(title, title, content) ) # Save the PDF document to a file pdf.SaveAs("sample_article.pdf") ``` 此脚本将获取示例文章的标题和文本,抓取它,并将HTML数据存储为当前目录下的`sample_article.pdf`文件。 ![Beautiful Soup Python(如何为开发人员工作):图3 - 上述代码示例的输出](/static-assets/pdf/blog/beautiful-soup-python/beautiful-soup-python-3.webp) ## 结论 综上所述,开发人员希望优化其数据提取和文档创建流程时,会发现Beautiful Soup Python和IronPDF的强大组合非常有用。 IronPDF强大的功能使专业级的PDF文档能够动态生成,而Beautiful Soup简单的解析技能则支持从网络资源中提取有用数据。 结合这两个库,开发人员拥有自动化包括创建发票、报告和网络抓取在内的各种操作的资源。 Beautiful Soup和IronPDF的合作让开发人员能够快速高效地实现目的,无论是包括从复杂的HTML代码中提取数据或立即创建自定义PDF出版物。 IronPDF捆绑购买时价格合理,并附带终身许可。 由于该包只需一次性支付$799,就可以多系统使用,性价比很高。 许可证持有者可以全天候访问在线工程支持。 有关费用的更多信息,请访问官网。如需了解更多Iron Software的产品,请访问此网站。
Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。