Python Beautiful Soup 刮取简易指南 | Linux 中国
![](http://om.gtimg.cn/om/om_3.0/h5_detail/images/logo_qiehao.png)
导读:Python 中的 Beautiful Soup 库可以很方便的从网页中提取 HTML 内容。
本文字数:3991,阅读时长大约:4分钟
https://linux.cn/article-14086-1.html
作者:Ayush Sharma
译者:MjSeven
今天我们将讨论如何使用 Beautiful Soup 库从 HTML 页面中提取内容,之后,我们将使用它将其转换为 Python 列表或字典。
什么是 Web 刮取,为什么我需要它?
答案很简单:并非每个网站都有获取内容的 API。你可能想从你最喜欢的烹饪网站上获取食谱,或者从旅游博客上获取照片。如果没有 API,提取 HTML(或者说刮取(scraping)可能是获取内容的唯一方法。我将向你展示如何使用 Python 来获取。
并非所以网站都喜欢被刮取,有些网站可能会明确禁止。请于网站所有者确认是否同意刮取。
Python 如何刮取网站?
使用 Python 进行刮取,我们将执行三个基本步骤:
1. 使用 库获取 HTML 内容
2. 分析 HTML 结构并识别包含我们需要内容的标签
3. 使用 Beautiful Soup 提取标签并将数据放入 Python 列表中
安装库
首先安装我们需要的库。 库从网站获取 HTML 内容,Beautiful Soup 解析 HTML 并将其转换为 Python 对象。在 Python3 中安装它们,运行:
提取 HTML
在本例中,我将选择刮取网站的Techhologynotes.ayushsharma.in部分。如果你跳转到此页面,你会看到带有标题、摘录和发布日期的文章列表。我们的目标是创建一个包含这些信息的文章列表。
网站页面的完整 URL 是:
我们可以使用 从这个页面获取 HTML 内容:
变量 将包含页面的 HTML 源代码。
从 HTML 中提取内容
为了从 中提取数据,我们需要确定哪些标签具有我们需要的内容。
如果你浏览 HTML,你会发现靠近顶部的这一段:
这是每篇文章在整个页面中重复的部分。我们可以看到 包含文章标题, 包含摘录, 包含发布日期。
让我们使用 Beautiful Soup 提取这些内容。
以上代码提取文章信息并将它们放入 变量中。我使用了 来美化输出,但你可以在代码中忽略它。将上面的代码保存在一个名为 的文件中,然后运行它:
如果一切顺利,你应该会看到:
以上是全部内容!在这 22 行代码中,我们用 Python 构建了一个网络刮取器,你可以在我的示例仓库中找到源代码gitlab.com。
总结
对于 Python 列表中的网站内容,我们现在可以用它做一些很酷的事情。我们可以将它作为 JSON 返回给另一个应用程序,或者使用自定义样式将其转换为 HTML。随意复制粘贴以上代码并在你最喜欢的网站上进行试验。
玩的开心,继续编码吧。
本文最初发表在作者个人博客notes.ayushsharma.in上,经授权改编。
via:https://opensource.com/article/21/9/web-scraping-python-beautiful-soup
作者:Ayush Sharma选题:lujun9972译者:MjSeven校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出
欢迎遵照 CC-BY-NC-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。