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