抓取用戶發(fā)布的所有微博的評論
? ? 點擊上方?月小水長?并?設為星標,第一時間接收干貨推送
根據(jù)微博話題爬蟲或者微博用戶爬蟲抓取保存的微博 csv 文件,里面保存的是一條條微博,批量爬取評論就是根據(jù)這些微博的 ID,抓取這些他們的評論。
之前根據(jù)話題爬蟲結(jié)果,批量抓取話題微博的評論,在【B 站視頻教程】抓取用戶微博和批量抓取評論 已經(jīng)有詳細說明,今天說的是根據(jù)用戶爬蟲的保存結(jié)果,批量抓取保存用戶微博的評論。
如果不知道如何抓取指定用戶的微博,可以參見 一個爬取用戶所有微博的爬蟲,還能斷網(wǎng)續(xù)爬那種,具體操作流程可以看 B 站配套視頻教程。
假如我們上一步抓取的是歌手李健的微博,其保存的 csv 內(nèi)容如下:

在發(fā)布微博評論爬蟲一文 2021 新版微博評論及其子評論爬蟲發(fā)布 我們可以知道,它需要一個類似下面的配置文件。
{"cookie": "更換成你的 cookie","comments": [{"mid": "KCAqH0IpS","uid": "1744395855","limit": 10000,"desc": "轉(zhuǎn)發(fā)理由:這首歌記載了那個夏天,也將開始記載你今后的日子,祝愿你永遠擁有那股與生俱來的內(nèi)在力量"}]}
uid 是指李健的用戶 id,mid 是李健發(fā)的某一條微博的 id,limit 指的是這條微博最多要爬多少條評論,默認 1w,desc 是描述這條微博的信息,這里默認是微博正文了,主要是 mid, uid 重要。
上面這個配置文件描述了只抓取 mid=KCAqH0IpS 這 1 條微博的評論,如果要批量抓取,則需要給 comments 列表 append 包含 mid、uid、limit、desc 這四個字段的字典,之前的話題爬蟲批量評論抓取配置文件有自動生成的腳本,這次批量抓取用戶微博的評論,同樣有。
# -*- coding: utf-8 -*-# author: inspurer(月小水長)# create_time: 2021/10/17 10:31# 運行環(huán)境 Python3.6+# github https://github.com/inspurer# 微信公眾號 月小水長import jsonimport pandas as pdlimit = 10000config_path = 'mac_comment_config.json'input_file?=?'./1744395855_歌手李健.csv'if '/' in input_file:user_id = input_file[input_file.rindex('/')+1:input_file.rindex('_')]else:user_id = input_file[:input_file.rindex('_')]user_name = input_file[input_file.rindex('_')+1:input_file.rindex('.')]def drop_duplicate(path, col_index=0):df = pd.read_csv(path)first_column = df.columns.tolist()[col_index]# 去除重復行數(shù)據(jù)df.drop_duplicates(keep='first', inplace=True, subset=[first_column])# 可能還剩下重復 headerdf = df[-df[first_column].isin([first_column])]df.to_csv(path, encoding='utf-8-sig', index=False)drop_duplicate(input_file)with open(config_path, 'r', encoding='utf-8-sig') as f:config_json = json.loads(f.read())df = pd.read_csv(input_file)# 清除原有的 comments 配置,如不需要可注釋config_json['comments'].clear()for index, row in df.iterrows():print(f'{index + 1}/{df.shape[0]}')mid = row['微博id']config_json['comments'].append({'mid': mid,'uid': user_id,'limit': limit,'desc': row['微博正文']})with open(config_path, 'w', encoding='utf-8-sig') as f:????f.write(json.dumps(config_json,?indent=2,?ensure_ascii=False))
然后運行評論爬蟲就行,上述具體操作流程可以參考 B 站下面這個視頻。
評論
圖片
表情
