直播小组页面/视频列表抓取工具

来自NFSC Dictionaries

视频列表抓取工具

  • 以下代码可用在python 3.8以上版本。需要 pandas yt_videos_list 两个包。

半手动

  1. 可以安装chrome插件Scraper。打开对应视频网页后,一直下滑,直到网页将全部视频载入。
  2. 在视频的标题上点右键,使用 Scraper 菜单,打开新窗口,根据自动获取的XPath预览即将抓取的内容。
    • GTV需要额外处理:将XPath输入框的 //div[1]/div/div[1]/div/div/div/a 中两个[1] [1]索引号删除。另外保存至excel后还需删除前面多余的行。
  3. 选择保存至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即可。

自动化

自动化需要准备的东西更多。

  1. 安装chromedriver,根据操作系统版本来安装。
  2. 通过 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)