1. 加载和解析 HTML 文档
功能简要概述
库 requests
就是我们的“信使”,
它出发去获取网页的 HTML 代码。它
发送 HTTP 请求并获取页面,就像送披萨的快递员一样,
只是没有“玛格丽特”披萨和包装盒。
BeautifulSoup
则是我们的
“厨师”,它可以轻松地将获取的 HTML
拆解成各个部分(标签、属性和文本),
这样我们就可以使用它了。它会帮我们找到需要的元素并保存所有重要的信息。
使用 requests 库
现在我们准备发送第一个 HTTP 请求并获取
页面 HTML 代码。让我们练习加载页面
example.com
吧。这个网站
是互联网的老古董,非常适合作为初学者的练习对象。
import requests
url = 'http://example.com'
response = requests.get(url)
# 检查一切是否正常
if response.status_code == 200:
print("页面加载成功!")
else:
print("出了点问题。错误代码:", response.status_code)
这个程序会向 URL 发送请求并根据响应输出成功或错误。 如果一切正常,我们就能拿到 HTML 页面代码作为文本。
跟踪错误代码
如果你实施网页抓取,那么你经常会遇到 页面应该加载但却没有加载的情况。所以分析错误代码 是任何处理多个页面抓取项目中必需的一部分。
这主要是因为网站拥有者并不喜欢有人抓取他们的数据。 首先,这会给网站带来负载(比如同时抓取数千个页面)。 其次,这些是他们的数据,他们靠此赚钱。有很多方法 可以对抓取进行对抗:CAPCHA, CloudFlare 等等。
对于企业来说,理想状况是能够抓取所有竞争对手的信息, 而自己却不被抓取。就像冷战一样。
使用 BeautifulSoup 解析 HTML
获得 HTML 代码后,我们可以使用
BeautifulSoup
来研究它。这就像
打开一本书并阅读其内容:
from bs4 import BeautifulSoup
# 将 HTML 代码的内容传递给 BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# 看看里面有什么
print(soup.prettify())
方法 prettify()
会将 HTML 代码格式化,
以便你能更好地研究它。在接下来的课程里,
我们会深入研究这个 HTML,就像小孩子玩沙子一样开心。
然后回家虽然会很累很脏,但也很快乐 :)
3. 实践:加载和分析 HTML
为了加深理解,让我们完成一个实际练习。
我们会尝试从 example.com
中提取
标题和描述。为此,我们将结合
我们的 HTML 知识和最新学到的 BeautifulSoup。
数据提取
# 提取页面标题
title = soup.title.string
print("页面标题:", title)
# 提取主标题 (h1)
main_heading = soup.h1.string
print("主标题:", main_heading)
# 提取段落文本内容
paragraph = soup.find('p').text
print("第一个段落:", paragraph)
在这个例子中,我们使用了属性 title
,
h1
和方法 find()
,从页面中
抽取需要的信息。我们就像网络侦探一样,在“犯罪现场”
寻找线索!
4. 常见错误
在使用网页抓取的过程中,你可能会遇到一些
常见错误,它们可能包括对 HTTP 请求的错误处理、
数据提取不正确或 HTML 解析错误。编写可靠
稳定的脚本需要耐心和实践。例如,
请务必检查状态代码
(response.status_code
),以确保你的请求
成功完成。不正确地使用方法
find()
和 find_all()
可能导致错误,特别是如果你没有考虑到 HTML 页面结构的话。
在开始抓取之前,请务必先分析 HTML。
网页抓取有很多实际应用:从数据收集分析到 自动监控商品价格。这些知识可能在求职面试中非常有用, 因为他们可能会问你一些项目代码示例。在实际工作中, 例如市场营销人员使用抓取来监控竞争对手的价格, 开发人员则用它与外部网站集成。
你在处理新闻聚合器和分析系统的信息时, 会用到网页抓取的知识。你可以自动化 日常任务,编写脚本,从不同的来源 自动收集数据。让我们继续开发我们的虚拟应用程序, 成为真正的网络高手吧!
GO TO FULL VERSION