诚之和:网页抓取教程 - 如何使用 Python 从任何网站抓取数据

网页抓取是自动从互联网中提取特定数据的过程。它有许多用例,例如为机器学习项目获取数据、创建价格比较工具或任何其他需要大量数据的创新想法。虽然理论上您可以手动进行数据提取,但互联网的大量内容使这种方法在许多情况下不切实际。因此,知道如何构建网络爬虫可以派上用场。这篇文章的目的是教你如何用 Python 创建一个网页爬虫。您将学习如何检查网站以准备抓取、使用 BeautifulSoup 提取特定数据、使用 Selenium 等待 JavaScript 渲染,以及将所有内容保存在新的 JSON 或 CSV 文件中。

但首先,我应该警告您网络抓取的合法性。虽然抓取行为是合法的,但您可能提取的数据使用可能是非法的。确保你没有爬取:

  • 受版权保护的内容 – 由于它是某人的知识产权,因此受法律保护,您不能只是重复使用它。
  • 个人数据——如果您收集的信息可用于识别个人身份,则它被视为个人数据,对于欧盟公民而言,它受 GDPR 保护。除非您有合法的理由来存储这些数据,否则最好完全跳过它。

一般来说,在抓取之前,您应该始终阅读网站的条款和条件,以确保您不会违反他们的政策。如果您不确定如何继续,请联系网站所有者并征求同意。

您的Scraper需要什么?

要开始构建您自己的网络爬虫,您首先需要在您的机器上安装Python。Ubuntu 20.04 和其他版本的 Linux 预装了 Python 3。

要检查您的设备上是否已经安装了 Python,请运行以下命令:

python3 -v

如果您安装了 Python,您应该会收到类似如下输出:

Python 3.8.2

此外,对于我们的网络爬虫,我们将使用 Python 包 BeautifulSoup(用于选择特定数据)和 Selenium(用于呈现动态加载的内容)。要安装它们,只需运行以下命令:

pip3 install beautifulsoup4

pip3 install selenium

最后一步是确保在您的机器上安装了 Google Chrome和Chrome 驱动程序。如果我们想使用 Selenium 抓取动态加载的内容,这些将是必要的。

 使用火狐浏览器或者其他浏览器也需要对应的浏览器驱动。

如何检查页面

现在你已经安装了所有东西,是时候开始我们的抓取项目了。

您应该根据需要选择要抓取的网站。请记住,每个网站的内容结构都不同,因此当您开始自己抓取时,您需要调整在此处学到的内容。每个网站都需要对代码进行细微的更改。

对于本文,我决定从 IMDb 的前 250 部电影列表中抓取前十部电影的信息:https : //www.imdb.com/chart/top/。

首先,我们将获得标题,然后我们将通过从每部电影的页面中提取信息来进一步深入研究。一些数据将需要 JavaScript 呈现。

要开始了解内容的结构,您应该右键单击列表中的第一个标题,然后选择“检查元素”。

通过按 CTRL+F 并在 HTML 代码结构中搜索,您将看到页面上只有一个<table>标记。这很有用,因为它为我们提供了有关如何访问数据的信息。

一个 HTML 选择器将为我们提供页面中的所有标题​table tbody tr td.titleColumn a​。那是因为所有标题都位于具有“​titleColumn​”类的表格单元格内的锚点中。

使用这个 CSS 选择器并获取每个锚点的​innerText​将为我们提供我们需要的标题。您可以在刚刚打开的新窗口中使用 JavaScript 行在浏览器控制台中模拟:

document.querySelectorAll("table tbody tr td.titleColumn a")[0].innerText

你会看到这样的结果:

现在我们有了这个选择器,我们可以开始编写 Python 代码并提取我们需要的信息。

如何使用 BeautifulSoup 提取静态加载的内容

我们列表中的电影标题是静态内容。这是因为如果您查看页面源代码(页面上的 CTRL+U 或右键单击然后选择查看页面源代码),您将看到标题已经存在。

静态内容通常更容易抓​​取,因为它不需要 JavaScript 渲染。为了提取列表中的前十个标题,我们将使用 BeautifulSoup 获取内容,然后将其打印在我们的Scraper的输出中。

im
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45378258

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值