当前位置: 首页 > news >正文

山西正规网站建设推广/宁波网站建设

你刚拿下了一个长期的大客户。你需要对这个行业有一个正确的理解,它是如何构成的,谁是领导者,这样你就可以帮助你的客户建立牢固的关系,并在这个行业中建立强大的思想领导力。

找到这些人的一种方法是通过行业出版物,这些出版物以提供战略和行业最佳实践内容的领导者为特色。

在本教程中,我们将使用爬行和抓取来创建这样一个数据库的核心-您可以利用的影响者列表。我将使用Python,如果您想要跟随,修改代码或稍后将其用作模板,您可以获得该教程的交互式版本。

更熟悉的是,行业是在线营销和广告行业,出版物是SEMrush博客,爬虫是开源广告工具爬虫。

在写这篇文章的时候,这个博客有393个作者,每个人都有一个个人主页。你可以手动复制和粘贴他们所有的个人资料和链接,但你的时间比这更有价值。

准备(要提取的页面和数据元素)

完整的博客列表和每个博客的个人资料页面的链接可以在这个模板的几个页面上找到:

https://www.semrush.com/blog/authors/all/?page={n} -其中“n”是1到14之间的数字。

我们首先生成这些页面的列表。爬虫会被指示从这里开始。

创建包含指向博客个人资料的链接的url列表的代码

从这些页面,爬虫应该遵循链接,并从每个配置文件页面提取我们感兴趣的某些元素,使用CSS选择器。如果您不熟悉CSS(或XPath)选择器,那么它们基本上是一种用语言指定页面部分的方法,这种语言比“列表项”(例如)更显式和更具体,而且与我们思考和查看页面的方式相对应。

您很可能不想要页面上的所有链接。你通常想要“页面顶部的所有链接都有社交媒体图标”。

我使用一个很好的浏览器工具SelectorGadget来帮助我找到选择器的名称。一旦你激活它,你在页面上的任何点击都会以绿色高亮显示,与所有类似的元素一起。如果您想要更具体,您可以单击其他元素来取消选择它们。

在下面的例子中,我首先点击了LinkedIn图标,它还选择了页面上的其他几个链接。然后,一旦我点击Home图标,它取消了所有其他元素的选择(这就是为什么它现在是红色的-见下图),我得到了与这个特定元素对应的选择器。

在页面的底部,你可以看到。b-social-links__item_ico_linkedin,它将明确地识别这些页面上的LinkedIn链接。如果需要,还可以单击XPath按钮来获得等效的模式。这就是我们如何向爬虫指定我们想要的元素。这是aj,我们的历史第一冠军!

使用CSS和/或XPath选择器提取页面元素

我对其他元素做了同样的处理,它们在下面的{key: value}映射(Python字典)中被命名。

键可以随意命名,它们将成为抓取输出文件中的列名。这些值是爬虫将提取的。注意,选择器以::text或::attr(href)结尾。如果你不指定,你仍然会得到正确提取的链接,但你会得到整个link对象:

CSS选择器:映射到提取模式的名称

现在,我们已经准备好了起始页,也有了我们想要提取的元素。为了爬行,我们使用下面的命令:

抓取命令,指定各种选项

让我解释一下:

作为adv导入advertools:激活advertools包,并使用别名adv作为简写来引用它。

Crawl是用于爬行的函数的名称,它接受一些参数来定制它的行为。

url_list=author_pages:这是爬虫开始爬行的位置。author_pages是我们给包含到博客个人资料的链接的14个url列表的名称。

output_file:这是我们希望保存抓取数据的地方。提供一个描述性的名称和日期总是好的。”。jl“表示”jsonlines“,这是一种灵活的存储数据的方式,其中每个URL的数据将保存在文件中的独立行中。我们将其作为DataFrame导入,然后可以将其保存为CSV格式,以便于共享。

follow_links=True:如果设置为False,则爬虫只会抓取指定的页面,这也称为“列表模式”。在本例中,我们希望爬虫跟踪链接。这意味着对于每个抓取的页面,所有链接都将被跟踪。现在我们不想抓取整个网站,所以我们使用以下设置来限制我们的抓取。

‘DEPTH_LIMIT’: 1:是的,请遵循您在初始页面上找到的链接,并抓取您找到的页面,但只能在初始14级之后的第一级。

selectors:引用我们为指定要提取的数据而创建的字典。

爬行有许多不同的选项,如果您对更多细节感兴趣,可以查看文档。这需要几分钟,现在我们可以使用pandas函数read_json打开文件,并指定lines=True(因为它是jsonlines)。

命令,使用pandas打开抓取输出文件

现在我们已经定义了变量semrush来引用爬行DataFrame。让我们首先看一下它包含的列。如下图所示,共有83根柱子。大多数是固定的,这意味着它们将始终存在于任何抓取文件中(如“title”,“h1”,“meta_desc”等),有些是动态的。

例如,OpenGraph数据可能存在于某个页面上,也可能不存在,所以有些列只有在页面上才会出现。具有社交网络名称和我们上面指定的名称的列只有在像本例中那样显式指定时才会出现。

爬行文件中所有列的列表

由于这不是SEO审计,我们只对与作者相关的提取数据感兴趣;现在我们将创建数据的一个子集。它基本上是说,我们想要semrush的子集(称为authors),其中列alltime_rank的单元格不是空的,列是“h1”、“url”或我们为提取指定的任何键。

作者表的随机样本(值被截断以适应屏幕)

我们快做完了。需要对数据进行一些清理。

清理数据

您可能已经注意到alltime_rank列中的附加字符,以及它包含两个值的事实;一个用于帖子中的排名,另一个用于评论中的排名。下面的代码将这两个值分开并删除嘈杂的字符。

从“alltime_rank”中删除不必要字符的代码

现在我们可以创建两个单独的列,每个列对应一个秩,并确保它们是整数,这样我们就可以按这些列排序。在某些情况下,博主没有评论排名,我们给他们一个零排名。

从“alltime_rank”创建两个新列的代码

最后一步。列job_title和rank_name在开头和结尾包含一些空格,因此我们将其删除。我们还删除了出现在摘要列中的分隔符,即两个@字符“@@”。

这是因为许多摘要中包含链接,并且它们被提取为三个或四个元素,因此我们删除了分隔符。最后,我们将“h1”重命名为“name”,将“url”重命名为“semrush_profile”,按“alltime_rank_posts”排序,并删除“alltime_rank”列。

我们做完了!

进行最终编辑的代码,以及十大博主(值被截断以适应屏幕)

让我们快速检查一下工作是否正确。让我们看看作者有多少行和列:

获取DataFrame的形状(行数和列数)

388行13列。不是393吗?

这是真的。似乎有五个博主有特殊的个人资料页面,他们有相同的数据,但在不同的设计(不同的CSS选择器)。这些是博客的“专栏作家”。我手动提取了它们的数据并将它们添加到表中,您可以在最终的semrush_blog_authors.csv文件中看到这些数据。

一个非常乐观的人有一次在地板上发现了一个马蹄铁,他立刻想到:“哦,现在我只需要三个马蹄铁和一匹马!”

这个名单只是一个马蹄铁。

这是与这些人交谈,建立真正的关系,并找到一种有意义的方式为网络做出贡献的过程。

现在您已经有了所有Twitter帐户的列表,您可能希望创建一个列表来跟踪您觉得有趣的人。你可能只对一个子集感兴趣,所以你可以通过标题或概要来过滤包含“内容”、“SEO”、“付费”或任何你感兴趣的内容。

该博客以多种语言发布,因此您可以对另一种语言执行相同的操作。有了LinkedIn上所有的个人资料,你可以考虑创建或加入一个专家小组,并邀请别人加入。

好运!

相关文章:

  • 威远移动网站建设/seo排名优化软件有用
  • java网站做微信分享/陕西网站建设网络公司
  • 东莞常平医院网站建设/深圳营销策划公司十强
  • 自己如何做网站建设/seo外链购买
  • 郑州网站建设网站开发/网络营销ppt案例
  • 邯郸网站建设浩森宇特/经典软文案例分析
  • 福州网站建设联系时事在/苏州百度快照优化排名
  • 舟山企业网站建设/网址大全下载
  • 六盘水网站建设/搜索引擎入口yandex
  • 网站建设多少钱一年/站长工具无内鬼放心开车禁止收费
  • 温州网站建设大全/网站关键词查询网址
  • 思帽西宁网站建设/排名轻松seo 网站推广