用户id可以出现在url中吗_数据收集:web scraper 多页(无规律url)抓取

前言

web scraper是一个很好用的Chrome爬虫插件,它易学易用,能够满足大部分需求,而且因为是基于浏览器渲染的,所以能回避很多反爬虫问题。另外,web scraper可以多开进程,对于一些反爬严重的网站,爬取速度不输给一些用Python等语言编写的爬虫程序。

网上已经有很好的web scraper教程,比如 田甜:web scraper 入门到精通之路 。

目前的教程已经介绍了如何进行有规律url的多页抓取。例如,我可以使用语法"https://weibo.com/p/1002066728786240/follow?relate=fans&page=[1-5]"作为start url,来爬取北京理工大学微博粉丝列表的前五页信息,而不用输入五次url。

然而,当url没有规律时该怎么办呢?难道要手动一个个输入吗?这样就会很没有效率。本文以爬取微博账号的粉丝列表为案例,讲解一种可行的无规律url的多页爬取方案。

项目描述

我们想做一些社会网络的研究,需要足够的微博用户数据。 为了获取尽可能全的微博用户,通过用户的关注关系进行遍历是一个比较好的爬取思路。

假设我们已经有了1000个种子用户,想继续爬取他们的粉丝来拓展用户量,这时候我们该怎么使用web scraper来达到目的呢?

解决方案

直观的方案就是手动输入这1000个url到插件中,如下图所示,可以一直添加下去。

538fc9c1029bb62f98e4dc5f3bdc253b.png

可以看出,虽然可以使用[1-5]语法来代表多个页面,但是用户ID是无规律的,只能手动输入,仍需要大量人工。总之,这种方案的效率比较低,而且种子用户的粉丝遍历完后,还要爬粉丝的粉丝,那时候还要手动输入。

为了提高效率,我们可以使用编程语言,基于种子用户的ID来自动生成web scraper的代码,并直接导入进去。导入代码的模块位置在:web scraper → Create new sitemap → Import Sitemap,如下图所示。

3b49a5270260df30d6cd4a5009069e70.png

核心问题就是Sitemap JSON如何生成。这时候,我们可以去看一下正确的应该是怎么样的,然后发现其中的规律。下图是设置好数据选择器的有两个start url的爬虫项目。

6c8afd3586c128d3a7caf7ced5b68768.png

然后,我们查看这个项目的内部代码,查看方式:web scraper → Sitemap name → Export Sitemap,如下图所示

fbe532badfc72f3b94724812419e2787.png

我们可以发现,这段代码可以分成头部、中部和尾部。

头部是 {"_id":"wb_fans","startUrl":[

中部是 "https://weibo.com/p/1005053942669859/follow?relate=fans&page=[1-5]","https://weibo.com/p/1002066728786240/follow?relate=fans&page=[1-5]"

尾部是 ],"selectors":[{"id":"user_url","type":"SelectorElementAttribute","parentSelectors":["_root"],"selector":"td:nth-of-type(2) a:nth-of-type(1)","multiple":true,"extractAttribute":"href","delay":0}]}

可以看出,头部没啥用,只是必要的前缀。中部表示要爬取的页面url,用逗号分隔,很有规律。尾部表示要爬取的数据和相应的延迟设置等。因此,我们要修改的只是中部,要从两个url拓展到1000个,其余的不变。我们当然就可以使用编程语言来高效完成这项工作。下图是我在实践一些项目中,用R语言生成的一些web scraper代码。

3ca061f6a5ae73e9856904ddc1b3fb3b.png

b764de962d2aa04fa2fab915a160cfe4.png

代码生成后,我们再将它粘贴到Import Sitemap里导入就可以了,如下图所示。

a720d2998c22508b4496f2f00f5ad936.png

后续就是正常爬取,爬取完导出CSV数据就行了。

总结

本文介绍了web scraper的一个使用经验,借助编程软件优化了web scraper使用中的一个爬取页面选择步骤,适用于那些有大规模无规律url的多页爬取项目。如果要爬取的页面很少,那么手动输入就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值