c#抓取网页数据( 一种更常见的翻页类型——翻页链接不规律的例子)

优采云 发布时间: 2022-01-07 06:09

  c#抓取网页数据(

一种更常见的翻页类型——翻页链接不规律的例子)

  

  总结:在列表中,豆瓣的电影列表使用了pager来分割数据:但是当时我们定期搜索网页链接,并没有使用pager来抓取。因为当网页的链接有规律的变化时,控制链接参数爬取是实现成本最低的;如果网页可以转成,但是链接变化不规律,就得去pager一下了。要说这些理论有点无聊,我们举一个不规则的翻页链接的例子。8月2日是蔡徐坤的生日。为了庆祝,微博粉丝给了坤坤300W的转发量,而微博的转发数据恰好是用来积分的。

  

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

  776448504/I0gyT8aeQ?type=repost的第二页是这样的。请注意,有一个额外的 #_rnd36 参数:

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

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

  emove(userId);}@Override@GetMapping("/findAll")public采集findAll(){

  

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

  这些理论有点无聊,我们举个不规则页面链接的例子。8月2日是蔡徐坤的生日。为了庆祝,粉丝们在微博上给了坤坤300W的转发量。微博的转发数据恰好被传呼机分割。我们来分析一下微博的转发。信息页,见

  实际上,在本教程的第一个示例中,我们抓取了豆瓣电影TOP列表。豆瓣的电影列表使用寻呼机划分数据:

  

  但当时我们是在找网页链接定期抓取,而不是使用寻呼机抓取它们。因为当网页的链接有规律的变化时,控制链接参数爬取是实现成本最低的;如果网页可以转成,但是链接变化不规律,就得去pager一下了。

  ping("/remove")publicvoidremove(@RequestParam("id")LonguserId){usersRepository.r

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

  t;)LonguserId){restTemplate.delete(""+use

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

  

  这条微博的直接链接是:

  classUserServiceIimplementsUserService{privateMapusersRepository=Maps.newHashM

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

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

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

  .推荐阅读简单数据分析05|WebScraper翻页-控制链接批量抓取数据简单数据分析08|WebScraper翻页-点击“更多按钮”翻页简单数据分析10|WebScraper翻页-抓取Scroll plus

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

  gn(@RequestParam("id")LonguserId){userRemote.remove(userId);}@GetMapping("/findAllByF

  第 3 页上的参数是 #_rnd39

  000条数据,但是第一页只有20条数据,抓到最后一条,还有980条;然后翻页的时候,设置了一个新的计数器,完成了第2页的最后一条数据,但是还缺少980条,一翻页计数器就重置,又变成1000了... 所以这

  第 4 页上的参数是 #_rnd76:

  ing-cloud-starter-dubbo 在这里介绍 DubboSpringClo

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

  ctionfindAll(){returnuserService.findAll();}} 其中@Reference注解需要指定调用服务提供者接口的版本号,如果不指定版本

  1.创建站点地图

  我们首先创建一个SiteMap,这次命名为cxk,起始链接是。

  

  2.创建容器选择器

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

  

  容器的预览如下图所示:

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

  

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

  vider_web/pom.xml***com.springc

  

  3.创建子选择器

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

  blicclassUserController{@Reference(version="1.0.0")UserServiceuserService;@PostMapping(&qu

  

  4.获取数据

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

  也不现实。毕竟WebScraper针对的数据量比较小。数以万计的数据被认为太多了。不管数据有多大,都要考虑爬取时间是否过长,数据是如何存储的,以及URL的逆向如何处理。爬虫系统(比如一个验证码突然跳出来,这个我们

  5.一些问题

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

  -type(-n+N) 控制获取 N 条数据。如果你尝试,你会发现这个方法根本没有用。失败的原因实际上涉及对网页的一些了解。如果你有兴趣,你可以阅读下面的解释。不感兴趣的可以直接看最后的结论。单击更改就像我之前介绍的那样

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

  cies>1.2 创建子项目dubbo_provider_web,服务提供者项目依赖pom.xml如下: 代码列表:Alibaba/dubbo-spring-cloud-http/dubbo_pro

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

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

  lication:name:spring-cloud-consumer-servercloud:nacos:discovery:server-addr:192.168.44.129:8848 接口测试类

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

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

  t;)UserServiceuserService;@PostMapping("/save")publicUserModelsave(@RequestBodyUserModelus

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

  太长了,数据怎么存储,URL的反爬虫系统怎么处理(比如一个验证码突然跳出来,这个WebScraper就无能为力了)。考虑到这个问题,如果你看过之前关于自动控制爬取次数的教程,你可能想使用:nth-​​of-

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

  启动程序测试

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线