微博位置爬虫发布

月小水长

共 2066字,需浏览 5分钟

 ·

2021-09-19 08:47

    点击上方 月小水长 并 设为星标,第一时间接收干货推送

这是 月小水长 的第 83 篇原创干货

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

微博数据分析经常需要和地理位置相关联,比如查看某一话题爬虫下发博人员地理分布,或者用户爬虫下某人轨迹分布,等等;而这次的微博位置爬虫则是直接以位置为切入点爬取微博,只需要输入一个地名,就能抓取在该地点发过的微博具体信息,表结构类似话题爬虫

这个位置爬虫的结果可以和用户信息爬虫联动,比如有这样一个分析任务:去北京环球影城的人,都发了什么微博,男生多还是女生多,年龄群体分布怎么样,等等。都可以先用这个微博位置爬虫,爬完后的 csv 交给用户信息爬虫处理。



闲话不多说,首先在本号(月小水长)后台回复关键词 微博位置爬虫 获取 pyd 文件(only for python3.6 64 bit),然后在新建一个 py 文件,引用这个 pyd 文件

from WeiboLocationSpider import WeiboLocationSpider
if __name__ == '__main__': WeiboLocationSpider(location_title='北京环球影城', cookie='改成你自己的 cookie', save_image=False)

首先是三个参数介绍,字面意思,第一个 location_title 就是你要爬的地名,必选;

cookie 也是必选,如果不想在参数这指定,也可以新建个 cookie.json 文件,里面是如下形式;

怎么获取这个 cookie 呢,打开下面这个网址(随便一个位置聚合页面都可) Chrome F12 Network Header
https://weibo.com/p/100101B2094654D36EA5FF459E

第三个 save_image 非必选,意思是是否保存爬取到的微博的图片,并且是微博原图,清晰度比较高,所以下载比较慢,所以为了快速抓取,默认值为 False,不保存,想要保存的话指定为 True 即可;河南暴雨超话时,很多信息是通过图片发布的,所以图片信息也很重要,可以通过 OCR 技术提取出文本,尝试了下,由于该微博保存的图片是原图,图片里面的文本信息几乎都能解析出来。

如果 save_image 设置为 True,图片保存如下:


一个地点无论大小,最多只能爬到四位数左右的微博数据,想要爬到更多怎么办,可以拆分成很多小地点,比如爬北京,你可以改成海淀区、朝阳区等等,或者把海淀区按照街道再细分,这样就能爬到更多的位置微博数据。

这个位置爬虫报错会有一些提示信息,如果出现 List IndexError,一般是需要换 cookie 了,报错会同时保存配置信息,比如当前爬到哪一页了,换了 cookie 后可以继续爬取,自动保存的配置文件格式如下。



一般来说,这个配置文件不需要人为修改,page = 15 表示当前爬到第 15 页了,下次继续;
你可能会好奇为什么会有个 neighborhoods 字段,它保存的是当前爬取地点的附近地点信息,根据 less is more 原则,我设计时附近地点并不是自动抓取,如果想要抓取,需要做以下修改。
  • 用想要抓取附近地点的 place_name 替代 location,比如 location 值改成 北京环球影城主题乐园

  • location 同级新增一个 page_root_url 字段,取值为上一步  place_name 对应的 place_url

  • 把 page 改成 1

改完以后的 json 文件信息如下,


在做这些修改之前,建议先把自动生成的配置文件备份一下。
重新运行就行抓取这个北京环球影城主题乐园了,又或者你懒得改,直接改刚才的代码。
from WeiboLocationSpider import WeiboLocationSpider
if __name__ == '__main__':   WeiboLocationSpider(location_title='北京环球影城主题乐园', cookie='改成你自己的 cookie', save_image=False)
有问题留言即可。
浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报