直播小组页面/视频列表抓取工具
来自NFSC Dictionaries
视频列表抓取工具
- 以下代码可用在python 3.8以上版本。需要 pandas yt_videos_list 两个包。
半手动
- 可以安装chrome插件Scraper。打开对应视频网页后,一直下滑,直到网页将全部视频载入。
- 在视频的标题上点右键,使用 Scraper 菜单,打开新窗口,根据自动获取的XPath预览即将抓取的内容。
- GTV需要额外处理:将XPath输入框的 //div[1]/div/div[1]/div/div/div/a 中两个[1] [1]索引号删除。另外保存至excel后还需删除前面多余的行。
- 选择保存至google drive或者复制到剪贴板。然后打开excel粘贴进去即可。
python处理抓取后的脚本-参考
import pandas def dealyoutube(filename): df = pd.read_csv(filename+'.csv',header=0) df['URL']='https://www.youtube.com'+df['URL'] text='# ['+df['URL']+" "+df['Link']+']' text.to_csv(filename+'.txt', sep=' ', index=False,quoting=csv.QUOTE_NONE,escapechar=' ') def dealgtv(filename): df = pd.read_csv(filename+'.csv',header=0) df=df[df["Link"].str.contains("人观看")==False] df=df[df["URL"].str.contains("/user/")==False] df=df.reset_index().drop('index',axis=1) df['URL']='https://gtv.org'+df['URL'] text='# ['+df['URL']+" "+df['Link']+']' text.to_csv(filename+'.txt', sep=' ', index=False,quoting=csv.QUOTE_NONE,escapechar=' ')
使用dealyoutube("XXXX.csv")或dealgtv("XXXX.csv")之后会生成对应的txt文件,文件里是整理好的wiki代码,直接贴入wiki即可。
自动化
自动化需要准备的东西更多。
- 安装chromedriver,根据操作系统版本来安装。
- 通过 pip 安装 yt_videos_list: pip install yt_videos_list
yt_videos_list脚本
from yt_videos_list import ListCreator channel_id='UCxGmoCxR5Kfop4T5poVVvzg' channel_name='奇闻全景' my_driver = 'chrome' lc = ListCreator(driver=my_driver, scroll_pause_time=0.8,headless=True,txt=False,md=False) lc.create_list_for(url='https://www.youtube.com/channel/'+channel_id, file_name='id', log_silently=True)
此时会获得抓取的原始文件。可以继续用下面脚本整理成手动抓取格式一致的csv文件
将yt_videos_list生成的csv整理成Scraper的格式
import pandas df = pd.read_csv(channel_id+'_reverse_chronological_videos_list.csv',header=0) df2=pd.DataFrame() df2['Link']=df['Video Title'] df2['URL']=df['Video URL'] df2['URL']=df2['URL'].str.replace('https://www.youtube.com/','/',regex=True) df2 df2.to_csv(channel_name+'.csv', index=False)