专栏首页月小水长微博爬虫综述、错误汇总、Q&A

微博爬虫综述、错误汇总、Q&A

微博爬虫综述

微博爬虫 Github 地址是 https://github.com/Python3Spiders/WeiboSuperSpider ,请不要利用该爬虫项目获得的数据作任何违法用途。

微博爬虫主要有两个导向,一个是微博内容的爬虫,其目的字段包括微博文本、发布者、转发/评论/点赞数等,另一个是微博评论的爬虫,其目的字段主要是评论文本和评论者

微博的爬虫的目的网站主要有四个,pc 站weibo.comweibo.cn 以及对应的 m(mobile) 站 m.weibo.com(无法在电脑上浏览)、m.weibo.cn,总得来说,.cn.com 更简单 UI 更丑,m 站比 pc 站更简单 UI 更丑。

Github 仓库详解

仓库的目录如下图所示,主要是分两部分 GUI 功能集中版无 GUI 功能独立版,GUI 即 Graph User Interface(图形用户接口)。

GUI 功能集中版

最开始只有 GUI 功能集中版 这一部分,主代码是 GUI.py 和 WeiboCommentScrapy.py。

GUI.py 包括爬虫逻辑和 GUI 界面,是基于 PyQt5 构建的,爬虫部分由三个类 WeiboSearchScrapy、WeiboUserScrapy、WeiboTopicScrapy,他们的目标站点都是 weibo.cn,都继承自线程类 Thread。

GUI.Py 里面实现的是用户/话题爬虫,即爬取指定用户/话题下的微博,当我们在界面点击提交了一个抓取任务,就会开启对应的线程类爬虫,抓取完毕通过该类和主界面之间的信号提示抓取完成。

GUI.py 运行效果图如下:

无论是微博用户,还是话题爬虫,都有 50 页左右的限制。

爬取了微博之后,我们可以使用 WeiboCommentScrapy.py 爬取指定微博的评论,怎么指定,参考下图

注意 weibo.cn 站微博的 id 是类似 IjEDU1q3w 这种格式,和后面的 m.weibo.cn 的微博 id 格式不同(它的纯数字,比较长),该评论爬虫只能爬取前 100 页的。

微博用户/话题/评论 爬虫的数据依次保存在 user/topic/comment 文件夹下的 csv 文件中。

20200313 实测 GUI 功能集中版的代码仍可用,exe 失效了,因为代码每更新一次就要打包、发布一次 exe,比较麻烦,我就没更新 exe 了(公众号后台的 exe 是第一版代码打包了,现在第三版了)

注意 GUI 功能集中版均是针对 weibo.cn,也就是界面最丑的那个站,不要把 weibo.com 或者 m.weibo.cn 的 cookie 放到这来,否则会出现以下错误:

encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
I/O error : encoder error
encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
I/O error : encoder error

同时,如果出现了诸如PermissionError: [Errno 13] Permission denied: 'comment/IaYZIu0Ko.csv 之类的错误,则是因为你在 excel 中打开了 这个 csv 文件,同时程序还在继续向这个文件追加写,获取不到锁因而报错,如果想一边跑一边查看文件内容,可以用 Pycharm 的 CSV Plugin 插件。

无 GUI 功能独立版

该文件下有三个文件 WeiboCommentScrapy.py、WeiboTopicScrapy.py、WeiboSuperCommentScrapy.py,前面两个都还是针对 weibo.cn 的,WeiboTopicScrapy.py 作了相应的升级,可以支持时间跨度搜索,比如之前假如这个话题有 1000 页,我们最多只能爬取 130 页,但是可能把这 1000 页按照时间段拆分,每个时间段(Year-Month-Day,不支持小时及以下时间颗粒度)无论长短,都最多能获取 130 页

而 WeiboSuperCommentScrapy.py 则是针对 m.weibo.cn 的,这个评论爬虫没有 100 页的限制,该文件运行可以不自己设置 cookie,可以通过账号登录自动获取 cookie,这一步是学习的一位简书博主的文章(https://www.jianshu.com/p/8dc04794e35f),否则需要我们自己去填 cookie 了,我一条微博拿到了几w+的评论,但是有的只能拿到几b几k(实际评论几w+),这点很迷。欢迎大家尝试,有问题请留言。

本文分享自微信公众号 - 月小水长(inspurer),作者:BuyiXiao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微博话题爬虫更新:突破 50 页限制

    在上一次更新至今,又出现了不少了 bug,昨天趁着有空更新了代码,这次的更新主要做了三件事

    月小水长
  • 利用Tensorflow构建自己的物体识别模型(一)

    利用Tensorflow训练搭建自己的物体训练模型,万里长征第一步,先安装tensorflow。

    月小水长
  • Python 打造自由 DIY 群聊机器人

    这几天我的一个小伙伴问我能不能给 Ta 做一个配置灵活的微信群聊天机器人,之前了解过 itchat 库的使用,我就爽快的答应了,花了一个晚上,终于做出了雏形。

    月小水长
  • Scrapy爬虫学习记录

    昨天休息的时候偶然发现了一个的球鞋网站,上面有很多关于球鞋的资讯。于是,决定现学现卖,学习scrapy把数据都给爬下来。

    100000798482
  • 【iOS 开发】NSError ** 与 throws 的三个问题

    使用的时候我们会传入一个 &error 再获取这个错误值,来看这个过程中有没有什么错误,那么通过 error == nil 不就可以知道是否执行成功吗,为什么需...

    KyXu
  • 微博话题爬虫更新:突破 50 页限制

    在上一次更新至今,又出现了不少了 bug,昨天趁着有空更新了代码,这次的更新主要做了三件事

    月小水长
  • Python 网络爬虫概述

    几乎每个网站都有一个名为robots.txt的文档,当然也有有些网站没有设定。对于没有设定robots.txt的网站可以通过网络爬虫获取没有口令加密的数据,也就...

    Python知识大全
  • 数据化时代,爬虫工程师才是真正“扛把子”

    就像在饭店里,你点了土豆并且能吃到,是因为有人帮你在土豆、萝卜、西红柿等中找到土豆,也有人把土豆拿到你桌上。在网络上,这两个动作都是由一位叫做爬虫的同学帮你实现...

    数据猿
  • Python|简单理解网络爬虫带你入门

    入门编程的小白们总是对计算机领域的各种“黑科技”感到好奇,其中“爬虫”对于小白来说算是一个高大上的技术,所以今天我将为大家揭开爬虫神秘的面纱,同时带领大家和我一...

    算法与编程之美
  • 初识爬虫的那天,我选择了Java ( ー̀◡ー́ )

    本科时,毕业论文需要不少网络上用户的问答数据。那时,我还没有搞过网络爬虫,只能利用关键词搜索的方式,找到相关数据,然后一条一条复制。我也觉得这样很傻,但不得不承...

    博文视点Broadview

扫码关注云+社区

领取腾讯云代金券