如何使用 Colab 和 adverttools 构建自定义爬虫

已发表: 2022-05-25

在本视频中,我们将讨论如何使用 Google Colab、Advertools 和其他一些 Python 库创建自己的自定义爬虫。 在你害怕或被吓坏之前,不要。 深吸一口气。 一切都会好起来的。 我什至不自称是编码员,但我很擅长复制和粘贴。 我知道你可以像我一样使用那个 Ctrl+C 按钮。 让我们看看我们如何创建自己的自定义 SEO 爬虫,以及如何将其用于帮助我们解决一些独特的问题。

资源

  • 在此处访问 Colab。
  • 在此处了解有关广告工具的更多信息。

视频记录:

让我们看看如何使用 Google Colab 以及 Advertools、Python 库构建自定义爬虫。

什么是 SEO 爬虫(蜘蛛)?

爬虫是可以像搜索引擎一样爬取网站页面的工具,它可以帮助我们获得有价值的 SEO 信息。 它可以帮助我们以 Google、Bing 或其他搜索引擎查看我们网站的方式查看网站。 有一些工具可以做到这一点。 有许多工具可以做到这一点,最流行的可能是 Screaming Frog SEO Spider,它是我们一直喜欢和使用的工具,但有时我们需要自定义解决方案。

为什么要创建自己的爬虫?

大多数“现成的”爬虫都做了令人惊奇的事情,但有时你有一个特定的问题需要回答,你可以创建一个自定义爬虫来控制所有输出。 您只会获得您想要或需要的数据。 这样您就不必受限于工具设置,但您可以使用 Colab 和Python。

什么是广告工具?

Advertools 是一个 Python 库,可以让你做很多事情。 您可以抓取网站、为您的搜索引擎营销活动生成关键字、创建文字广告、分析 SERP、深入了解社交媒体帖子,以及做更多的事情。 这是一个非常灵活的库。 它做了很多很酷的事情,而且使用起来相当简单。

我不会称自己为程序员。 我只想说我很擅长复制和粘贴。 尽管我不是一个深入的 Python 程序员,但我已经能够从使用像 Advertools 这样的工具中获得很多好处。

我们要做什么

这就是我们在这个视频中要做的。

  1. 创建一个新的 Colab 文件并安装 Adverttools
  2. 使用广告工具创建自定义爬虫
  3. 抓取和分析网站和数据
  4. 使用另一个名为 Plotly 的 Python 库可视化其中的一些结果
  5. 导出数据

第 1 步:创建 Colab 文件并安装 Adverttools

Google Colab 是一个工具,它可以让你做很多很酷的事情。 它允许您在单元格中运行代码来构建表格、构建您自己的程序、执行自定义操作、从机器学习到 SEO 等任何事情。 如果您以前从未使用过它,它可以免费使用,并且可以让您免费利用 Google 的计算能力。 这很酷,所以我强烈建议你去看看。

如果您还没有使用 CoLab,这里有很多很棒的资源。 为了使用 Python 之外的库,您必须做的一件事是自然安装。 您需要安装该程序。 大多数时候,您使用一个名为 PIP 的函数,然后您将拉入那个新库。 这是一个相当简单的使用过程。

所有这些构建这些程序的人所做的一件事就是他们向您展示了如何在他们的文档中进行设置。 所以总是阅读这些文档,它会让你理解,“我如何导入这些工具并让这些工具为自己工作?”

为了安装 Advertools,我们将在这里使用这行代码:

!pip install advertools

将此处的代码放入 CoLab 的单元格中后,继续点击播放按钮。 它将执行这段代码。 你应该看到类似这样的东西,它在这里安装了代码和整个包,这样我们现在就可以使用这个库来构建我们的爬虫了。 一旦你看到绿色的复选标记,你就知道它已经完成了。

第 2 步:使用 Advertools 创建自定义爬虫

接下来,我们将要执行一行新代码。

import advertools as adv
from advertools import crawl
import pandas as pd
 

您可以继续点击此处的代码按钮,它将填充这个新的。 我们将导入 Advertools 库的一些特定部分。 我们正在导入广告工具,我们正在导入 crawl 方法。 我们还导入了一种叫做 pandas 的东西。 对于那些不熟悉 Python 的人,pandas 允许我们在数据框中处理我们的数据,基本上是在 Python 中制作表格。

一旦你设置了所有这些,你继续运行你的代码。 这将导入所有这些信息。 如果我们正在构建爬网,你会注意到这里,它正在讨论我们如何做到这一点,我们如何导入这些爬网。 有几种方法; 你可以像我们一样导入 Advertools 并运行这个命令行,它会做我们正在做的事情。

我想让 Colab 更易于使用,以防我团队中的某个人也想利用它。 我们将做一些与他们在这里展示的有点不同的事情。 但是,如果您遵循这种方法,您将得到正确的结果并且它也将起作用。

site = "https://simplifiedsearch.net/" #@param {type:"string"}

crawl(site, 'simp.jl' , follow_links= True )
crawl_df = pd.read_json( 'simp.jl' , lines= True )
crawl_df.head()
 

我们要做的就是这行代码。 我们要做的第一件事是定义一个变量,该变量将是我们要抓取的网站。 通过使用这个参数类型字符串,它在这里给了我一个框,然后我可以在这里输入我想要抓取的网站。 我可以把我的网站放在这里。 我可以把任何网站放在这里,它会为我设置那个变量。 这样我就不用在这里输入了。 我可以将它输入到一个表格中,而那些不喜欢在单元格内部单击的人可以继续在这里输入一个侧面。

在这种情况下,我们将使用我们的简化搜索站点,因为我们一直都在使用它。 我们将继续将其粘贴到此处。 就在下面,我们遵循与他们在这里设置的完全相同的规则。 我们使用 Advertools.crawl,然后我们使用站点作为我们的变量。 我们有一个输出文件。 然后我们希望它跟随网站内的链接。

我们也进行下一步,设置爬取数据框,并告诉它打开我们的输出文件,因为它将以 JSON 格式输出。 pandas 将读取 JSON 并为我们创建一个数据框。 最后,我告诉我们只是显示这个数据框的头部,以确保一切都按预期工作。 一旦我们按照此步骤运行此单元格,我们将抓取该网站,它将在下面进行数据转储,我们将能够看到此抓取中的所有不同功能。

我要继续运行这个单元。 仅仅因为它正在对整个网站进行爬网,这可能需要几分钟。 完成后,我们将讨论如何利用爬网数据提取特定信息。

第 3 步:抓取和分析网站和数据

现在该站点已爬网,您可以看到我有一个 URL、标题、元描述、视点、字符集、H1、H2 和 H3 的列表。 所有这些信息都被拉入这个框架。 如果你想让它看起来更干净一点,你可以在这里点击这个神奇的按钮,谷歌将把这里的数据传输到更容易使用的数据框架中。 我这里共有 266 列。我可以使用的列有很多。

您可能会问自己所有这些列中的内容。 我们可以回到这里查看广告工具,您可以看到所有不同的元素。 有相当多的出口数据,我们可以查看并提取很多很酷的信息。

如果我们想查看可用的所有不同列的列表,我们可以运行以下代码:

columns = list (crawl_df)
columns
 

我们需要先获取列并从中创建一个列表。 我们将使用代码列表,然后放入括号,并在它们的 crawl_DF 中,这是我们的数据框的名称,并调用新的列表列。 在这里,我们有列,我们运行该单元格,您可以看到所有这些不同的可能列。 这是相当多的信息,如您所见,它正在寻找大量信息。

如果您只想查看其中的一部分信息怎么办? 如果您只是想获取所有标题或所有元描述或某些 H 标记信息,或者您可能想查看所有页面以及您可能拥有的 schema.org 标记类型,该怎么办。 这就是 Adverttools 之类的东西派上用场的地方。

假设我们想查看页面中的 JSON-LD 类型。

json_df = crawl_df[[ 'url' , 'jsonld_@type' ]]
json_df
 

我们可以从一些新代码开始。 让我们继续创建一个名为 JSON-DF 的新数据框。 我们想从原始数据框中获取一些信息。 我们要做的第一件事,让我稍微往下走,让每个人都更容易爬行,_DF。 我们将使用一个支架和另一个支架。

我们要提取的第一件事是 URL。 我们知道 URL 很重要,因为我们需要知道我们网站中的所有页面,所有 URL。 接下来我们要做的是找到 JSON 类型。 我们可以回到这个列表,我们可以选择 JSON 类型,复制它并说,我也想知道 JSON 类型。 我将继续保持一致,这样我们就可以遵循最佳实践。 我们在这里的这条小线上做什么? 我们说“创建一个新的数据框”并使用来自我们原始数据库的数据,来自我们的原始数据框并仅拉回 URL 和 JSON-LD 类型。

如果我运行它,它将创建一个仅包含该信息的新数据框。 为了查看这些数据,我可以继续,输入 JSON_DF,新建一个单元格,然后按 Enter。 它为我提供了我所有页面的列表以及与这些特定页面相关联的标记类型。 如果您想快速查看并找到您网站上的所有 JSON、您拥有的类型以及您拥有的标记,这将非常有帮助。

此外,您是否有一些页面缺少标记? 您可以快速识别这些。 我们有这个新数据,我们有我们所有的 URL,我们有我们知道该页面上存在的所有 JSON-LD 类型。

第 4 步:可视化结果

假设我们想要创建一个快速报告或图表来显示给客户或其他人,或者我们为他们添加到此站点的信息和数据量以及它的不同类型。

我需要做的第一件事是计算已添加的所有不同类型的标记,然后我可以将其可视化。 让我们开始计算这个并创建一个新的数据框。 我已经创建了这段代码,我将引导你完成它:

json_counts = json_df[ 'jsonld_@type' ].value_counts()
json_counts = json_counts.reset_index()
json_counts

这称为 JSON 计数。 这是一个新的数据框。 我们从这里的 JSON-LD 列中获取数据。 我们让它计算此列中的唯一值。 当我运行这段代码然后告诉它输出它时,你会看到我们已经计算了所有这些信息。

它所做的是它给了我这个错误,因为它在列表中找到了一些零或一些 NAS。 没关系,因为您马上就会看到我们在这里获得了这些信息。 这是所有不同的标记类型,它们都为我们准备好了。

您也注意到它看起来不像这里的数据框。 我们必须将此数据框或此变量重新索引到数据框中才能正常工作。 我们将继续提供我们的数据框并运行以下代码:

json_counts = json_counts.reset_index()

 

当我们运行它时,你会看到我们有一个数据框。 我们有索引,也就是术语。 然后我们有 JSON-LD 类型和它的数量。 我们仍然没有图表。 我们仍然只有另一个数据框。 为了将这个数据框变成可视化或图表,我们需要做什么? 我们将使用一个叫做 Plotly 的东西。

Plotly 是另一个库,与 Advertools 非常相似,我们可以使用它来创建可视化,具体来说,我们将使用 Plotly express。 我们需要做的第一件事是安装 Plotly,我们继续执行 PIPinstallPlotly,我将运行这个单元。 它已安装在此工作表中,但没关系。 如您所见,它会告诉我们它已经安装,已经很满意了。 我们可以走了。

获取我们刚刚从这里复制的代码并将其粘贴回我们的爬虫中。 我们不需要这个中间的,因为这是我们没有使用的数据。 我们正在使用我们自己的数据。 我们确实需要将 Plotly express 导入为 PX,并且我们需要在此处连接我们的新数据库,以便将正确的信息输入到我们的图表中。

! pip install plotly
 
import plotly.express as px
fig = px.bar(json_counts, x='index', y='jsonld_@type') fig.show()
 

我们的数据框称为 JSON 计数。 在我们的 X 上,我们将使用索引,在 Y 上,我们将使用 JSON 类型。 我为什么选择那些? 索引是单词所在的位置。 我们希望在 X 上有这些,然后计数在 JSON-LD @type 上,这将是我们的 Y,它将告诉我们每个列中有多少。 我们会继续把它放在这里。 很简单。 然后 fig.show 将显示该图。 所以现在,我们在这里有所有不同的类型,在这里,我们在一个漂亮的图表中显示了每种类型的不同数量。

如果你想分享它,你可以将它下载为 PNG,Plotly 现在会将它下载到你的计算机上。 你可以拿这个说,“我们在这么多页面上做了这么多的标记。” 一种快速可视化它的非常酷的方法。

第 5 步:导出数据

但是,如果我们想下载所有这些数据并使用它,可能在 Google 表格或其他东西中怎么办? 好吧,您也可以这样做。 我们只需要多使用一行代码就可以了。 因此,假设我们将在此处下载此表,其中包含我们所有的网站页面和 JSON-LD 类型。 我们可以继续到这个单元或任何你想要的,然后我们将创建一个新的代码行。

我们需要使用来自 Google Colab 的东西,称为导入文件。 这是我们要做的第一件事。 接下来,我们要找到这个数据框,它是 JSON-DF。 我们将在下面添加它并说 .2_CSV,然后我们将为它命名。 我们可以称之为 JSON_DF.CSV。 输入此代码后,您就创建了 CSV 文件。 如果我在此处查看我的文件夹,您将在此处看到该文件。

从这里,我可以继续下载它,或者我可以在这里放一行代码来帮助我们更快地下载它。 我可以说 files.download,然后我继续调用我刚刚创建的这个文件,我要求 Colab 直接为我下载它。 当我运行这个单元时,它会下载那个文件,在这里我有它。 我可以继续,单击打​​开,现在我有了这个 CSV 文件,我可以使用我拥有的任何类型的电子表格工具做任何我想做的事情。 我还可以看到可能缺少一些标记的那些。

你有它。 我们已经开始了,我们已经创建了我们自己的自定义爬虫。 我们提取了一些自定义数据。 我们已经可视化了这些数据,并且我们已经下载了这些数据以供其他程序使用。 我们做了这一切,而我不是计算机程序员,我什至不想假装自己是程序员。 就像我之前说的,我只是擅长复制和粘贴。 这些东西你们也可以想办法。

当您有问题时,总会有很酷的解决方案。 如果您愿意尝试新的和不同的东西,我强烈建议您在 Colab 中玩转。 那里有很多很棒的资源。 有很多人比我聪明得多,他们在做更多令人惊奇的事情,我从中学到了很多,并且在我的营销游戏、研究、爬行等方面帮助了我。

如果您对我们今天所做的事情有任何疑问,请在下面发表评论。 我还将提供对这个特定 CoLab 文件的访问权限,我什至会逐步分享我们在此过程中使用的代码。 非常感谢您的收看。 不要忘记订阅,直到下一次,快乐的营销。

如果您有兴趣,这是完整的代码: