前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源豆瓣系列爬虫之用户广播爬虫

开源豆瓣系列爬虫之用户广播爬虫

作者头像
月小水长
发布2021-09-02 10:26:18
7900
发布2021-09-02 10:26:18
举报
文章被收录于专栏:月小水长月小水长

目前公众号平台改变了推送机制,点“赞”、点“在看”、添加过“星标”的同学,都会优先接收到我的文章推送,所以大家读完文章后,记得点一下“在看”和“赞”。

应不住读者的请求,打算新开一个豆瓣系列的爬虫,主要是为了爬取豆瓣的小组和用户信息,并且全部开源出来。

今天这篇主要是分享豆瓣用户广播爬虫,可能还是有不少同学对豆瓣广播不熟悉的,看下图就很清楚,豆瓣的广播有点类似于 QQ 空间的说说,但是多了一些豆瓣自己的元素,比如,”在看“、”在读“,”听过“ 这些 Action。

豆瓣用户主页广播

抓取的主要内容是广播里的听、说、读、看这四部分(不包括转发的内容),听这一个又包括在听,想听,听过等,所有种类比较多,同时字段又不规则,所以本次保存的文件形式不再是 csv,而是 json;我个人理解,csv 文件对应 mysql 等结构化数据库,json 文件对应 mongodb 等非结构化数据库,如果想改成 mongodb,在后文获取代码修改保存文件的函数即可;对于开源的东西,我倾向于使用 csv/json 文件形式保存数据,一是配置少,二是直观。这份代码运行保存的结果如下

保存的json文件

整个项目的仓库地址是

https://github.com/Python3Spiders/DouBanSpider

可以在浏览器打开(best) 或者直接点击阅读原文获取代码;主要讲讲如何定制化使用和二次开发。

这份代码需要跑起来,首先需要一个配置文件 user_config(git 仓库里就有),其格式如下

代码语言:javascript
复制
{
 "users": [
   "https://www.douban.com/people/G16022222",
   "https://www.douban.com/people/170796758"
],
 "cur_user_index": 0,
 "cur_user_cur_page_index": 31
}

users 就是你想爬取的用户主页列表,这个直接去豆瓣网复制就可以得到;为了避免每次都要重新开始抓取第一个用户,字段 cur_user_index 就是为了保存上一次已经抓取到哪一个用户了,下次可以直接继续,这个保存过程是程序自己完成了,没有特殊需要不用人为改动;爬虫是基于翻页的,cur_user_cur_page_index 保存了当前抓取的用户翻到哪一页了,和 cur_user_index 组合起来就可以使用更细粒度的恢复抓取。

另外一个是需要在 py 文件中修改 Cookie,在 Chrome 开发者工具中打开 Network 栏,过滤 urlPath 的关键词 statuses,复制过滤后的请求的 Cookie。

如何获取 Cookie

程序设计了每翻页一次休眠 3 s,测试发现运行过快会导致下面的结果而导致程序中断,这也是我为什么设置恢复抓取逻辑的原因之一,只要在网页打开豆瓣输入验证码,重新运行就能恢复抓取。

豆瓣网页输入验证码

开源的代码是最小可行性产品;比如出现验证码,可以二次开发个验证码识别程序自动化;为了防止出现验证码,可以自己构建代理池(一般免费的代理质量不高),或者付费买代理 ip,无非就是构建服务,给请求添加 proxies 参数即可;为了加快速度,可以使用线程池,协程等;凡此种种,皆不是本开源爬虫的本身,定位只是一个豆瓣备份工具而已;大家可以二次开发。

开源的目的是为了方便大家使用,有疑问请在 git 仓库上提 issues ;同时一起贡献这份爬虫代码,有觉得代码设计逻辑可以改进的或者有 bug 的,请提 pull request

欢迎体验,吐槽。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 月小水长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目前公众号平台改变了推送机制,点“赞”、点“在看”、添加过“星标”的同学,都会优先接收到我的文章推送,所以大家读完文章后,记得点一下“在看”和“赞”。
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档