dataabc / weibo-crawler

新浪微博爬虫,用python爬取新浪微博数据,并下载微博图片和微博视频
3.46k stars 769 forks source link

想要爬取规定日期里最新的n条微博 #123

Open ChenYuyu1912 opened 4 years ago

ChenYuyu1912 commented 4 years ago

您好,

如果我有一个很长的user_id_list,想要爬取里面各个用户从2020-01-01至今最新的100条微博,(也就是说,如果某用户在2020-08-26至2020-09-26期间发了100条微博,那我就只需要这100条微博的数据),如果在2020-01-01至今这个日期区间的微博不超过100条的话就是爬取所有微博。不知道我是否描述清楚了……想问一下可以通过修改程序来解决吗?

谢谢!

dataabc commented 4 years ago

感谢反馈。

按你的描述,如果某用户已经获取100条微博并且发布时间等于或大于2020-01-01,就结束这个用户的爬取。修改weibo.py的get_one_page方法: 原来:

    def get_one_page(self, page):
                            ...
                            created_at = datetime.strptime(
                                wb['created_at'], '%Y-%m-%d')
                            since_date = datetime.strptime(
                                self.user_config['since_date'], '%Y-%m-%d')
                            ...

现在

    def get_one_page(self, page):
                            ...
                            created_at = datetime.strptime(
                                wb['created_at'], '%Y-%m-%d')
                            since_date = datetime.strptime(
                                self.user_config['since_date'], '%Y-%m-%d')
                            if len(self.weibo
                                   ) == 100 and created_at >= datetime.strptime(
                                       '2020-01-01', '%Y-%m-%d'):
                                return True
                            ...

上面可能获取多于100条微博,如某用户在2020-01-01之后发布了90条,之前发布了50条,程序就会爬取所有140条微博。如果你想在2020-01-01之后发布大于等于100条时获取100条,否则获取最新100条,只需要把上面的if语句改成if len(self.weibo)==100:就可以。

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