excel抓取多页网页数据( 豆瓣日记:WebScraper怎么对付这种类型的网页(12))

优采云 发布时间: 2021-09-26 22:06

  excel抓取多页网页数据(

豆瓣日记:WebScraper怎么对付这种类型的网页(12))

  

  这是简单数据分析系列文章的第十二篇文章。

  本文首发于博客园:简单数据分析12。

  在之前的文章文章中,我们介绍了Web Scraper对于各种翻页的解决方案,比如修改网页链接加载数据、点击“更多按钮”加载数据、下拉自动加载数据等。今天我们说的是一种比较常见的翻页机。

  我想解释一下什么是寻呼机。我发现浏览一堆定义非常麻烦。这不是每个人都上网的第一年。看看图片吧。找了个功能最全的例子,支持数字页码调整,上一页下一页,指定页码跳转。

  

  今天我们将学习如何通过Web Scraper来处理这种类型的翻页。

  其实在本教程的第一个例子中,抓取豆瓣电影TOP列表,豆瓣的电影列表使用pager进行数据划分:

  

  但当时,我们正在寻找定期抓取的网络链接,我们没有使用寻呼机来抓取它们。因为当网页的链接有规律的变化时,控制链接参数爬取的代价是最低的;如果网页可以翻,但链接变化不规律,就得去翻页了。

  要说这些理论有点无聊,我们举一个不规则的翻页链接的例子。

  8月2日是蔡徐坤的生日。为了庆祝,粉丝们在微博上给了坤坤300W的转发量。微博的转发数据恰好被传呼机分割。我们来分析一下微博的转发。信息页,看看这类数据是如何用 Web Scraper 爬取的。

  

  这条微博的直接链接是:

  /1776448504/I0gyT8aeQ?type=repost

  看了这么多他的视频,为了表达我们的感激之情,我们可以点进点出,为坤坤添加阅读量。

  首先,我们来看看第 1 页的转发链接,它看起来像这样:

  /1776448504/I0gyT8aeQ?type=repost

  第 2 页看起来像这样,并注意有一个额外的 #_rnd36 参数:

  /1776448504/I0gyT8aeQ?type=repost#_rnd36

  第 3 页上的参数是 #_rnd39

  /1776448504/I0gyT8aeQ?type=repost#_rnd39

  第 4 页上的参数是 #_rnd76:

  /1776448504/I0gyT8aeQ?type=repost#_rnd76

  多看几个链接,可以发现这个转发的网页的网址是不规则的,所以只能用pager翻页加载数据。下面开始我们的实际教学环节。

  1.创建站点地图

  我们首先创建一个SiteMap,这次命名为cxk,起始链接是/1776448504/I0gyT8aeQ?type=repost。

  

  2.创建容器选择器

  因为我们要点击pager,所以我们选择Element Click作为外层容器的类型。具体参数说明见下图。之前我们在简单数据分析08中详细讲解过,这里就不多说了。

  

  容器的预览如下图所示:

  

  寻呼机选择过程如下图所示:

  

  3.创建子选择器

  这些子选择器比较简单,类型都是文本选择器。我们选择了三种类型的内容:评论用户名、评论内容和评论时间。

  

  4.获取数据

  您可以按照Sitemap cxk -> Scrape的操作路径抓取数据。

  5.一些问题

  如果你看了我上面的教程,马上爬取数据,你可能遇到的第一个问题是300w的数据,我能把它全部爬下来吗?

  听起来不切实际。毕竟Web Scraper针对的数据量比较小。数以万计的数据被认为是太多了。无论数据有多大,都要考虑爬取时间是否过长,数据如何存储,如何处理。Web Scraper的反爬虫系统(比如突然弹出验证码,这个Web Scraper就无能为力了)。

  考虑到这个问题,如果你看过之前关于自动控制取数的教程,你可能想使用:nth-​​of-type(-n+N)来控制取N条数据。如果你尝试,你会发现这个方法根本没有用。

  失败的原因实际上涉及对网页的一些了解。如果你有兴趣,你可以阅读下面的解释。不感兴趣的可以直接看最后的结论。

  就像我之前介绍的点击更多加载网页和下拉加载网页一样,它们新加载的数据被添加到当前页面。你不断下拉,数据不断加载。同时,网页的滚动条会越来越短。这意味着所有数据都在同一页面上。

  当我们使用:nth-​​of-type(-n+N)来控制加载次数的时候,其实相当于在这个页面上设置了一个计数器。当数据累积到我们想要的数量时,它就会停止爬行。

  但是对于使用翻页设备的网页来说,每次翻页就相当于刷新当前网页,这样每次都会设置一个计数器。

  比如你想抓取1000条数据,但是页面第一页只有20条数据,抓到最后一条,还有980条数据;然后当翻页时,设置一个新的计数器,并抓取第 2 页的最后一个。一条数据还是980,翻页计数器复位,又变成1000了……所以这种控制数字的方法是无效的。

  所以结论是,如果你想早点结束对pager类网页的抓取,只有这种断网的方法。当然,如果你有更好的计划,可以在评论中回复我,我们可以互相讨论。

  6.总结

  Pager 是一种很常见的网页分页方式。我们可以通过 Web Scraper 中的 Element click 处理此类网页,并通过断开网络来结束抓取。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线