Redian新闻
>
使用 Beautiful Soup 在 Python 中抓取网页

使用 Beautiful Soup 在 Python 中抓取网页

公众号新闻

本文讨论如何使用 Beautiful Soup 库从 HTML 页面中提取内容。提取后,我们将使用 Beautiful Soup 将其转换为 Python 列表或字典。

为了让网络抓取在 Python 中工作,我们将执行三个基本步骤:
使用requests库提取 HTML 内容。
分析 HTML 结构并识别包含内容的标签。
使用 Beautiful Soup 提取标签并将数据放入 Python 列表中。
安装库
首先安装我们需要的库。requests库可以从网站获取 HTML 内容。Beautiful Soup 解析 HTML 并将其转换为 Python 对象。在Python 3中需要安装下面两个库:
[root@localhost ~]# pip3 install requests beautifulsoup4

提取html
本文抓取该网站的技术页面。如果你转到该页面,将看到带有标题、摘录和发布日期的文章列表。我们的目标是创建一个包含该信息的文章列表。
技术页面的完整 URL 是:
https://notes.ayushsharma.in/technology
我们可以使用requests从这个页面获取 HTML 内容:
#!/usr/bin/python3
import requests

url = 'https://notes.ayushsharma.in/technology'

data = requests.get(url)

print(data.text)
变量 data 将包含页面的 HTML 源代码。
从 HTML 中提取内容
为了从 data 中提取我们的数据,我们需要确定哪些标签具有我们需要的内容。
如果你浏览 HTML,会在顶部附近找到此部分:
<div class="col">
<a href="/2021/08/using-variables-in-jekyll-to-define-custom-content" class="post-card">
<div class="card">
<div class="card-body">
<h5 class="card-title">Using variables in Jekyll to define custom content</h5>
<small class="card-text text-muted">I recently discovered that Jekyll's config.yml can be used to define custom
variables for reusing content. I feel like I've been living under a rock all this time. But to err over and
over again is human.</small>
</div>
<div class="card-footer text-end">
<small class="text-muted">Aug 2021</small>
</div>
</div>
</a>
</div>
这是在每篇文章的整个页面中重复的部分。我们可以看到 .card-title 有文章标题, .card-text 有摘录, .card-footer 类下面的small标签 有发布日期。

让我们使用 Beautiful Soup 提取这些内容。
#!/usr/bin/python3
import requests
from bs4 import BeautifulSoup
from pprint import pprint

url = 'https://notes.ayushsharma.in/technology'
data = requests.get(url)

my_data = []

html = BeautifulSoup(data.text, 'html.parser')
articles = html.select('a.post-card')

for article in articles:

title = article.select('.card-title')[0].get_text()
excerpt = article.select('.card-text')[0].get_text()
pub_date = article.select('.card-footer small')[0].get_text()

my_data.append({"title": title, "excerpt": excerpt, "pub_date": pub_date})

pprint(my_data)
上面的代码提取文章并将它们放入 my_data 变量中。我正在使用 pprint 来打印输出。
总结
我们可以将它作为 JSON 返回给另一个应用程序,或者使用自定义样式将其转换为 HTML。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Python 项目工程化最佳实践指南在 Linux 上试试这个基于 Python 的文件管理器 | Linux 中国Cape Cod -- South Yarmouth疗养院爆发 COVID 疫情,造成 5 人死亡,超过 90 人感染"𝙇𝙚𝙖𝙙 𝙏𝙝𝙚 𝘾𝙝𝙖𝙧𝙜𝙚"广告#创译挑战Debian终于完全删除Python 2BB鸭 | ​孟晚舟将当值华为轮值董事长;微信支持网页翻译;魅族20曝光;真我GT Neo5发布;小红书网页版上线为什么适用于Python的TensorFlow正在缓慢消亡Julia 快到离谱?不,它并没有比 Python 快 340000,000,000 倍Python 教你快速批量下载抖音去水印短视频[歪解] thank you for your generous support2022我飞越三洲(3)华盛顿DC宝藏多多巴黎,巴黎(8)Python的魔术方法小结仅剩一席|三周掌握Python, SQL, R, Excel, VBA等必备工具Conagen和Natáur达成合作,生产可持续天然牛磺酸中国新冠为什么这么多人发烧?刚刚!摩根大通实习生录取标准曝光:会Python太吃香了!麻省理工Python增强编译器Codon 让Python像C\\C++一样高效巴黎,巴黎(9)速领!哈佛学霸都在学的Python课程,3天即可掌握!import 一个“太极”库,让 Python 代码提速 100 倍!硬核有奖问卷|你选择 JavaScript 还是 Python?下一个热门语言由你定义Chase Southwest 联名卡 Pay Yourself Back (PYB) 功能简介:抵消年费&吃饭类别Q526: 如何高效学习 Python 的第三方库?【臻品府邸, 随心所建】麦克金利Grand Estates of the South行宫级私人定制豪宅尊启定制!2023需求最高的编程语言:Python、JavaScript和JavaSQLAlchemy 2.0.0发布首个RC,Python ORM框架Q527:理解Python装饰器的3个案例两天赚1w,用Python接私活的一些技巧理解Python中GIL锁[干货] out of question 和 out of the question,含义天壤之别!日本啊,日本(十一)利休之死一篇关于使用Python实现财务报表自动化的实用指南Out with the old, in with the new. JuniorCoach is here for you行业入门|量化分析,一个工作语言是Python和Chinese的行业
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。