LiuXingMing / SinaSpider

新浪微博爬虫(Scrapy、Redis)
3.27k stars 1.52k forks source link

Fans数量不全的问题 #37

Open Jiawen-Yan opened 7 years ago

Jiawen-Yan commented 7 years ago

在Information表中有的Id拥有几千粉丝,但是存储的时候只能存几个,应该是翻页有限制,翻了几页之后就翻不下去了。不知道有没有什么比较好的解决方案。谢谢:)

shizi626 commented 7 years ago

可以通过抓取微博评论中的用户id解决该问题,不过速度会慢很多。 另外,手动将微博中各个分类出现的大V添加进id库中也会有好处。

LiuXingMing commented 7 years ago

我在文章里应该有说,微博对粉丝关注的查看是有限制的,你只能查看别人最多200个粉丝/关注,你在浏览器上也只能看200个,这是新浪的限制,接口限了,是拿不到全部粉丝的。另外weibo.cn这个站好像会过滤掉僵尸粉,显示出来的粉丝数比200还少点。

LiuXingMing commented 7 years ago

从微博评论这个途径添加粉丝是个方法,但是一般微博的评论都很少,而且只可能抓取到粉丝,关注不行。另外评论微博的不一定是自己的粉丝,也有挺大的概率是陌生人。

Jiawen-Yan commented 7 years ago

好的,非常感谢回答!

这里还有几个小问题想问一下:

(1) 我在Issue中看到了有人问,爬取会自动停止,因为ID池都被爬完了;理论上是不是在开始阶段多加入些大V的ID会解决这个问题? 或者说,在爬取的过程中不停地把粉丝计入待爬队列,这个过程不应该停吧?

(2) 接着,如果爬到粉丝的ID也会加入到队列中,这应该会形成一个大网络,保证了微博数量完整性,但是会不会带来重复性问题?简而言之就是,一个人已经被爬过了,但是他又出现在另一个人的粉丝中,这时候正确的逻辑应该是仍将他加入队列,再去重扔掉。Redis的去重可以解决这个问题吗?

(3) 对于每一个人爬取的逻辑是 yield Request(url=self.host + url_next[0], callback=self.parse_tweets, dont_filter=True) 翻下页,再加入队列中,那么是不是逻辑上可以将一个人的所有微博都拿出来?Weibo.cn没有对这个翻页做出限制吧?

谢谢