微博数据爬取

目标:

  • 爬取内地、港台明星势力榜前50名的明星近期微博数据。
  • http://chart.weibo.com/?rank_type=3&version=v1
  • http://chart.weibo.com/?rank_type=5&version=v1

达成:

  • 爬取共100名明星微博。
  • 共计24219条微博。

技术路线

众所周知微博API限制很多…user_timeline 竟然只能获取当前用户的数据,home_timeline 竟然只能获取150条数据 🙁
所以我选择了从页面爬取: https://weibo.cn,爬取过程总共被局部封号3个(仅 .cn 网站无法访问,24小时内已经回复)
首先我尝试用模拟登录的方式进行爬取,找到了以下不错的现有代码:

  • https://github.com/xianhu/LearnPython
  • https://github.com/xchaoinfo/fuck-login

但是用纯代码爬取还需要处理cookies,新手技术不足,决定绕道行驶…….
最终实现下来的技术路线是:

  • 获取排行榜 HTML,利用 Python3 抽取出明星微博 ID 列表。
  • 用 Burpsuite 截取登录后对 weibo.cn/id 的访问请求,添加至 Intruder。(为了快速爬取,把每页条数设置为50; 为了获取获取页数参数,在页面翻页器里输入1)
  • 设置 POST Request URL 中 ID 部分和 Body Parameter 里 page 值为 Intruder Position,进行批量并发爬取(为降低封号概率,可降低并发线程数和请求时间间隔)
    • http://weibo.cn/$ 12345678 $
    • page=$ 1 $
  • 保存下批量获取的 HTML 后,用 Python3 读取逐个文件提取信息。

ID提取

HTML 信息存储在: https://github.com/Data-Reactor/Cute-Crawlers/tree/master/weibo

微博信息提取

Github: https://github.com/Data-Reactor/Cute-Crawlers/tree/master/weibo

Leave a Reply

Your email address will not be published.