Python Beautiful Soup 刮取简易指南 | Linux 中国

Linux中国 2021-12-16

导读: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 协议规定转载,

如需转载,请在文章下留言 “转载:公众号名称”,

我们将为您添加白名单,授权“转载文章时可以修改”。

哆哆女性网给宝宝起个名字 姓李宝宝起名称免费评分起名字解名大师唐楚楚江辰最新全文免费阅棋牌室起什么名字好用gba游戏下载永远的第一名在线观看张纪中版西游记剧情服务起名姓王男孩怎么起名字湖南电信网上营业厅小店取名起名大全你是哪颗星北京同仁医院眼科专家水果茶起名梦想绿茵场悦字起名女孩名字凤凰卫视名字起的大七雄匈奴战力表明辈起名男孩名字辽宁广播电视台教育青少频道安卓游戏盒子秽翼的尤斯蒂娅取名免费起名网打分高德地图数据包九州天空城百度云给男的起英文名校园欺凌构成犯罪的要承担什么责任孩子起名字大师淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化