以前利用selenium写过哔哩哔哩简单的脚本,后来数据丢失,痛苦万分,今天看到这个库了解一下便写了这个脚本。
切记做好数据备份
文章目录
- DrissionPage简介:
- 代码部分
DrissionPage和selenium很像,但是更简单,配置也是
DrissionPage简介:
DrissionPage 是一个基于 python 的网页自动化工具。
-
它既能控制浏览器,也能收发数据包,还能把两者合而为一。
-
可兼顾浏览器自动化的便利性和 requests 的高效率。
-
它功能强大,内置无数人性化设计和便捷功能。
-
它的语法简洁而优雅,代码量少,对新手友好。
代码部分
为避免风险,将元素替换为汉字了,仅供学习
建了一个公众号,后续会在上面更新一些有用资源和笔记,大家有兴趣的话可以加一下谢谢了。
from DrissionPage import ChromiumPage
from urllib.parse import quote
import pickle
import time
page = ChromiumPage()
list = ["口袋觉醒"]
# 遍历list
for i in list:
original_str = i
encoded_str = quote(original_str)
input_url = "https://search.bilibili.com/all?vt=25182142&keyword=" + encoded_str + "&from_source=webtop_search&spm_id_from=333.1007&search_source=5"
page.get(input_url)
time.sleep(3)
# 获取所有class为bili - video - card__info - -tit的元素
videoTitle = page.eles('.bili视频卡片__信息--标题')
print(len(videoTitle))
# 遍历videoTitle
for index in range(len(videoTitle)):
# 每次循环前重新获取元素列表,防止引用失效
videoTitles = page.eles('.bili视频卡片__信息--标题')
videoTitles[index].click()
page.wait.new_tab() # 等待新标签页出现
tab = page.get_tab(page.latest_tab) # 获取指定标签页对象
# 弹幕
barrage = tab.ele('.bpx-播放器-弹幕-输入')
if barrage:
barrage.click()
barrage.input("开心")
send = tab.ele('.bui-区域 bui-蓝色按钮')
send.click()
time.sleep(1)
# 评论区
pinglun = tab.ele('.回复框-文本区域')
pinglun.scroll.to_see()
pinglun.click()
tab.ele('.回复框-文本区域 焦点').input("ll")
publish = tab.ele('.回复框-发送 发送-激活').ele('.发送文本')
time.sleep(3)
publish.click()
tab.close()
time.sleep(3)