dataabc / weiboSpider

新浪微博爬虫,用python爬取新浪微博数据
8.37k stars 1.98k forks source link

数据不全 #241

Closed jypjypjypjyp closed 3 years ago

jypjypjypjyp commented 4 years ago
dataabc commented 4 years ago

感谢反馈。

是说对于同一个用户,多次爬取每次获取的数量都不相同吗?如果通过user_id_list.txt输入user_id,每次都是增量获取,数量很可能不同;如果通过列表输入的user_id,对应的用户可能又发布(或者删除)了微博,前后数量也可能不同,不知道是不是这些原因让每次爬取的个数不同。

jypjypjypjyp commented 4 years ago

具体情况是这样的,我爬取了某个用户一段时间(7.1~9.30)的数据,大概一千多条。第一次爬取时得到了大概1335条。和之前爬取的相差较多(有1731条,但是原来的数据在人工检查的时候发现是不全)。在对新爬取的数据检查的时候发现,在7月确实有明显的缺失,考虑是不是网络原因,我将等待时间调长,并3个月分开爬取,最后总和,发现数据量为1510条。对其他用户爬取时,也发现有多有少的情况。因为每次爬取都是连续进行的,大概率不是用户此时正好在删除过去的微博。

dataabc commented 4 years ago

这应该是接口不稳定造成的。

本程序使用了两种接口:当end_date为"now"时,程序爬取的是微博列表页,这是可以完全获取到的;当end_date为日期值时,使用微博接口筛选日期,这时候可能会出现相同的时间范围数量不同,原因是系统有时候返回的数据不一样多。

所以如果你想完全爬取,可以把end_date设置为"now",这样程序会从当前开始爬到since_date止,数据是完整的,缺点是速度不如第二种快,因为额外爬取了从现在到10.1的微博。如果使用第一种又想加速,可以先手动获取起始日期微博所在的页数,然后修改spider.py的get_weibo_info方法:

for page in tqdm(range(1, page_num + 1), desc='Progress'):

将range中的第一个1替换成获取到的页数,程序就会从该页开始爬了。

如果还有问题,欢迎继续讨论

dduo518 commented 4 years ago

发现一个问题就是 有用户的微博只能爬到一定的页数。然后用 https://weibo.cn/ 这个域名去查看只能看到47页 然后用m.weibo.com 不断向下翻页又能看到比weibo.cn 更多的数据。不知道为什么,可以用m.weibo.com 爬吗?

dataabc commented 4 years ago

@chong0808

<m.weibo.com>是不是错了?有<m.weibo.cn>和,没有<m.weibo.com>。 如果是<m.weibo.cn>,可以使用weibo-crawler目前还没写相关的程序。

dduo518 commented 3 years ago

@chong0808

<m.weibo.com>是不是错了?有<m.weibo.cn>和,没有<m.weibo.com>。 如果是<m.weibo.cn>,可以使用weibo-crawler目前还没写相关的程序。

哦 是 https://m.weibo.cn/ 这个

dataabc commented 3 years ago

@chong0808

那使用weibo-crawler应该满足你的要求,它用的就是https://m.weibo.cn/

zhangjingfeng520 commented 3 years ago

@dataabc 你好,我是用的weibo-crawler,我发现有几条微博需要添加cookie才能获取到,这是微博的机制吗?

dataabc commented 3 years ago

@zhangjingfeng520

是的,免cookie可以获得大部分微博(比如https://m.weibo.cn/detail/4516868084180273),但是部分微博需要登录才能获取(https://m.weibo.cn/detail/4402254083394033)。

zhangjingfeng520 commented 3 years ago

@dataabc 非常感谢这么晚还回答,麻烦了。

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 3 years ago

Closing as stale, please reopen if you'd like to work on this further.