php如何抓取网页数据(如何使用BeautifulSoup库从HTML页面中提取内容(图))
优采云 发布时间: 2021-09-18 06:19php如何抓取网页数据(如何使用BeautifulSoup库从HTML页面中提取内容(图))
今天我们将讨论如何使用BeautifulSoup库从HTML页面提取内容。提取后,我们将使用BeautifulSoup将其转换为python列表或字典
什么是网络爬行
答案很简单:并不是每个网站都有获取内容的API。你可能想从你最喜欢的烹饪网站中获取食谱,或者从你的旅游博客中获取照片。如果没有API,提取HTML或爬行可能是获取内容的唯一方法。我将向您展示如何在Python中实现这一点
注意:并非所有网站都喜欢抓取,有些网站可能会被明确禁止。如果可以捕获,请与网站所有者联系
如何抓取网站
为了使网络爬网在Python中工作,我们将执行三个基本步骤:
使用请求库提取HTML内容。分析HTML结构并识别收录内容的标记。使用beautifulsoup提取标记并将数据放入python列表中。安装库
让我们先安装我们需要的库。请求从中获取HTML内容网站. Beauty soup解析HTML并将其转换为Python对象。要为Python 3安装这些,请运行:
pip3 install requests beautifulsoup4
提取HTML
在本例中,我将选择抓取的技术部分网站. 如果你转到这个页面,你会看到一个文章的标题、摘录和发布日期列表。我们的目标是创建一个收录此信息的文章列表
技术页面的完整URL为:
https://notes.ayushsharma.in/technology
我们可以使用请求从此页面获取HTML内容:
#!/usr/bin/python3
import requests
url = 'https://notes.ayushsharma.in/technology'
data = requests.get(url)
print(data.text)
变量数据将收录页面的HTML源代码
从HTML中提取内容
要从中接收的HTML中提取数据,我们需要确定哪些标记具有我们需要的内容
如果浏览HTML,您将在顶部附近找到此部分:
HTML:
Using variables in Jekyll to define custom content
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.
Aug 2021
这是每篇文章整页中重复的部分文章. 我们可以看到。卡片标题有一个文章title,。卡片文本摘录,和。卡片页脚>;小发行日期
让我们用漂亮的汤来提取这些内容
Python:
上面的代码将提取文章并将它们放入数据变量中的my_u中。我正在使用pprint进行一个很好的打印输出,但是您可以在自己的代码中跳过它。将上述代码保存在名为fetch.py的文件中,并使用以下命令运行它:
python3 fetch.py
如果一切顺利,您应该看到:
Python:
[{'excerpt': "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.',
'pub_date': 'Aug 2021',
'title': 'Using variables in Jekyll to define custom content'},
{'excerpt': "In this article, I'll highlight some ideas for Jekyll "
'collections, blog category pages, responsive web-design, and '
'netlify.toml to make static website maintenance a breeze.',
'pub_date': 'Jul 2021',
'title': 'The evolution of ayushsharma.in: Jekyll, Bootstrap, Netlify, '
'static websites, and responsive design.'},
{'excerpt': "These are the top 5 lessons I've learned after 5 years of "
'Terraform-ing.',
'pub_date': 'Jul 2021',
'title': '5 key best practices for sane and usable Terraform setups'},
... (truncated)
就这些!在22行代码中,我们用Python构建了一个web爬虫程序。您可以在我的示例repo中找到源代码
结论
使用python列表中的网站内容,我们现在可以用它做一些很酷的事情。我们可以将其作为JSON返回到另一个应用程序,或者使用自定义样式将其转换为HTML。请随意复制和粘贴上述代码,并在您最喜欢的网站上进行实验@