dataabc / weibo-crawler

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

请问能否只爬微博信息,不需要用户信息,直接把输出的json文件里user的键值直接移除呢 #360

Open woshiniba-debug opened 1 year ago

woshiniba-debug commented 1 year ago

请问能否只爬微博信息,不需要用户信息,直接把输出的json文件里user的键值直接移除呢

dataabc commented 1 year ago

这个只能修改程序,或者编写新程序单独处理json。

woshiniba-debug commented 1 year ago

请问应该如何编写或者修改呢,打印的函数方法是哪个呢?

woshiniba-debug commented 1 year ago

我注释了很多方法,依旧不能移除user的键值对,我想只保留weibo的键值对

dataabc commented 1 year ago

修改write_json、update_json_data方法,它们和写json有关。您目前的需求和打印没关,它只是运行时显示出来,不一定保存。如果只想要写入json微博信息,只要修改上面的方法,特别是update_json_data方法。

woshiniba-debug commented 1 year ago

我想爬微博首页的内容,把首页给爬下来,需要包含你的项目里weibo的数据,这个能实现吗或者有没有这个项目?

woshiniba-debug commented 1 year ago

请问这两段代码应该怎么修改才能去掉user呢? def write_json(self, wrote_count): """将爬到的信息写入json文件""" data = {} path = self.get_filepath("json") if os.path.isfile(path): with codecs.open(path, "r", encoding="utf-8") as f: data = json.load(f) weibo_info = self.weibo[wrote_count:] data = self.update_json_data(data, weibo_info) with codecs.open(path, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) logger.info("%d条微博写入json文件完毕,保存路径:", self.got_count) logger.info(path)

def update_json_data(self, data, weibo_info): """更新要写入json结果文件中的数据,已经存在于json中的信息更新为最新值,不存在的信息添加到data中""" data["user"] = self.user if data.get("weibo"): is_new = 1 # 待写入微博是否全部为新微博,即待写入微博与json中的数据不重复 for old in data["weibo"]: if weibo_info[-1]["id"] == old["id"]: is_new = 0 break if is_new == 0: for new in weibo_info: flag = 1 for i, old in enumerate(data["weibo"]): if new["id"] == old["id"]: data["weibo"][i] = new flag = 0 break if flag: data["weibo"].append(new) else: data["weibo"] += weibo_info else: data["weibo"] = weibo_info return data

dataabc commented 1 year ago

我也不知道这个项目。你注释掉data["user"] = self.user看看。

woshiniba-debug commented 1 year ago

这就是这个项目的代码呀,注释后报错

dataabc commented 1 year ago

你自己调试看看,我手头没电脑,只能人脑调试。