dataabc / weibo-search

获取微博搜索结果信息,搜索即可以是微博关键词搜索,也可以是微博话题搜索
1.7k stars 372 forks source link

微博数据数据不全,貌似只能爬取到前50页的内容? #45

Open potato12433 opened 3 years ago

potato12433 commented 3 years ago

大大,感谢你的分享,你的分享对刚刚入门爬虫的我很有帮助,但是在应用你的框架时,遇到了一些问题,想跟您请教一下: 一、通过在关键词列表中设置[A,B,C]三个关键词,出现的相关问题有: 1.通过微博的高级搜索单独搜索A,,可以搜到大概50页的内容,但是通过运行Scrapy框架获得数据只有2条,对于这种数据结果不一致还有总数据量收到限制的情况可以怎么解决啊? 2.在爬取C关键词的结果里,获取了很多与C关键词无直接关系的数据,例如C关键词=“建筑信息”,但是很多条数据仅含有“建筑”一词,貌似不是精准的,请问这种情况是什么原因造成的呢?

dataabc commented 3 years ago

本程序是模拟的微博搜索。 1.搜索每次最多获取50页,但是可以通过细分做到更多。程序在获取某个搜索时,如果结果不足50页,就认为只有这么多微博,否则认为还有更多,只是显示了50页,这是程序会细分。比如当前如果是按天搜索的,细分成按小时,获取更多。但是有些关键词虽然有很多,最多却显示40多页。这时程序会误认为只有这么多,所以获取少了。为了获取更多,修改weibo-search\weibo\spiders\search.py,把数字50改成45左右就行。 2.程序模拟的微博搜索,说明微博上也是这么显示的,应该是模糊搜索。修改piplines.py->DuplicatesPipeline,将process_item方法改成如下代码即可:

    def process_item(self, item, spider):
        keywords = item['keyword'].split(' ')
        for keyword in keywords:
            if keyword not in item['weibo']['text']:
                raise DropItem("过滤不满足关键词的微博: %s" % item)
        if item['weibo']['id'] in self.ids_seen:
            raise DropItem("过滤重复微博: %s" % item)
        else:
            self.ids_seen.add(item['weibo']['id'])
            return item
DylanDenali commented 3 years ago

搜索每次最多获取50页,每页是有多少条呢?

dataabc commented 3 years ago

@DylanDenali 每页20条。

nyx560 commented 1 year ago

@DylanDenali 每页20条。 现在好像每页只有10条了

silliye commented 1 year ago

怎么改成只获取10页或者更少呢

nyx560 commented 1 year ago

这是来自QQ邮箱的自动回复邮件。邮件已收到。

dataabc commented 1 year ago

@silliye 要修改search.py。