大家好,今天教大家爬取企鹅视频的弹幕。
首先打开腾讯视频的网页。
本次使用的技术是selenium和requests
现在讲一下思路,因为我想获取那个视频的弹幕就能获得,所以要加一个用户输入的功能,所以我使用selenium进行输入,使用requests进行获取弹幕,现在开始实现。
首先导包
我就把所有要使用的包都列出了,这里就不一一讲解了,反正全部写入代码里就行
movie_name = input("请输入您想要的哪部电影的评论:")
这里用户输入自己想要的电影评论
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://v.qq.com/channel/movie')
这个是自动化操作打开网页的代码
接着该把用户输入的文本传到腾讯视频的搜索框里,我们打开开发者工具定位搜索框
这里我们可以轻易看出定位到了,接下来写代码
driver.find_element_by_id('keywords').send_keys(movie_name)
search_bar = driver.find_element_by_xpath('//*[@id="keywords"]')
actions = ActionChains(driver)
actions.move_to_element(search_bar).perform()
这样我们的文本已经输入到搜索框里了,然后该模拟鼠标进行点击搜索,我们再次定位到搜索按钮
button = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="searchForm"]/button/div/div/div')))
button.click()
这样我们成功来到了二级界面,按照上面的方法我们再次模拟鼠标点击立即播放到三级界面。
到这里自动化结束了,关闭所有窗口
driver.quit()
接下来使用requests爬取视频弹幕,
我们进入电影界面打开开发者模式进行分析界面
像弹幕这种数据100%都是二次渲染上去的,所以我们直接打开
这些里面就有我们的弹幕数据,只需要慢慢分析就可以发现
其中数字显示的就是我们要的弹幕数据,两个数字之间的其他数据是每一帧画面的视频,如果要爬取视频可以通过这些进行操作获得,我们这次只获得弹幕数据,只分析字母里面的。
我们打开随意一个数字数据不难发现,content中这么人性化的语言就是我们的弹幕数据
接下来我们打开两个数字数据进行分析比较
https://dm.video.qq.com/barrage/segment/s00242sxrne/t/v1/2040000/2070000
https://dm.video.qq.com/barrage/segment/s00242sxrne/t/v1/2070000/2100000
其中https://dm.video.qq.com/barrage/segment/这个是域名,s00242sxrne这个是每个电影的字母标识,2040000/2070000是以30000为单位进行递增的,存完之后接着往下一数字递增。
到这里最麻烦的分析结束了,剩下的写逻辑和保存就可以了
这里我懒得敲了,直接图片奉上。
现在我们运行试试
ok,运行没问题。
总结一下,这个弹幕我个人感觉挺简单的,唯一的难点就是分析弹幕数据,看完之后自己可以线下试试。
有问题的,想讨论的,想要源代码的加我qq 3540889826。欢迎一起交流