import timeimport randomfrom selenium import webdriverfrom seleniumwebdrivercommonkeys import Keysfrom seleniumwebdrivercommonaction_chains import ActionChains# 定义评论内容comment = 我爱坤我爱坤 他是我的梦想我的阳光 他的歌声他
改进优化代码如下:
- 使用try-except块来处理可能出现的异常情况,避免程序中断。
- 使用隐式等待来代替固定的延时等待,提高代码的执行效率。
- 使用元素的ID或CSS选择器来定位元素,而不是使用Xpath定位,因为ID和CSS选择器的定位速度更快。
- 使用webdriver提供的方法来实现点击、输入等操作,而不是使用ActionChains类,简化代码的编写。
- 使用更具有可读性的变量名来命名变量,提高代码的可读性。
改进后的代码如下:
import time
import random
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 定义评论内容
comment = """我爱坤,我爱坤 他是我的梦想,我的阳光 他的歌声,他的舞姿 让我心动,让我疯狂
我爱坤,我爱坤 他是我的偶像,我的英雄 他的笑容,他的温柔 让我沉醉,让我迷恋
我爱坤,我爱坤 他是我的一切,我的唯一 他的存在,他的付出 让我感动,让我感激
我爱坤,我爱坤 他是我的蔡徐坤"""
# 定义登录信息
username = "17584511015"
password = "ccf1901304265"
# 创建浏览器对象
driver = webdriver.Chrome()
# 打开b站首页
driver.get("https://www.bilibili.com/")
# 点击登录按钮
login_button = driver.find_element_by_css_selector(".nav-link.login-btn")
login_button.click()
# 输入用户名和密码
username_input = driver.find_element_by_css_selector("input[name='login-username']")
password_input = driver.find_element_by_css_selector("input[name='login-passwd']")
username_input.send_keys(username)
password_input.send_keys(password)
# 点击登录按钮
submit_button = driver.find_element_by_css_selector("a.btn.btn-login")
submit_button.click()
# 输入搜索关键词
search_input = driver.find_element_by_css_selector(".nav-search-input")
search_input.send_keys("蔡徐坤")
# 按回车键进行搜索
search_input.send_keys(Keys.ENTER)
# 等待搜索结果加载完成
driver.implicitly_wait(10)
# 切换到新打开的窗口
driver.switch_to.window(driver.window_handles[1])
# 获取视频列表
video_elements = driver.find_elements_by_css_selector(".video-card-common")
for video_element in video_elements:
try:
# 获取视频标题
video_title = video_element.find_element_by_css_selector(".video-card-common .tit").text
print(video_title)
# 点击视频打开视频详情页
video_element.click()
# 切换到新打开的窗口
driver.switch_to.window(driver.window_handles[2])
# 视频点赞
video_like_button = driver.find_element_by_css_selector(".like")
video_like_button.click()
# 视频收藏
video_collection_button = driver.find_element_by_css_selector(".collect")
video_collection_button.click()
video_collection1_button = driver.find_element_by_css_selector(".collect .bui-select-item")
video_collection1_button.click()
video_collection2_button = driver.find_element_by_css_selector(".collect .bui-button")
video_collection2_button.click()
# 编辑评论
comment_input = driver.find_element_by_css_selector(".textarea")
comment_input.click()
comment_input.send_keys(comment)
# 点击发送评论
comment_button = driver.find_element_by_css_selector(".send")
comment_button.click()
# 点赞评论
like_button = driver.find_element_by_css_selector(".comment .like")
like_button.click()
# 关闭当前窗口,回到搜索结果页面
driver.close()
driver.switch_to.window(driver.window_handles[1])
except Exception as e:
print(str(e))
# 关闭浏览器
driver.quit()
改进之处:
- 使用隐式等待来等待元素加载完成,而不是使用固定的延时等待,提高代码的执行效率。
- 使用CSS选择器来定位元素,而不是使用Xpath,因为CSS选择器的定位速度更快。
- 使用webdriver提供的方法来实现点击、输入等操作,而不是使用ActionChains类,简化代码的编写。
- 使用更具有可读性的变量名来命名变量,提高代码的可读性
原文地址: https://www.cveoy.top/t/topic/hPvt 著作权归作者所有。请勿转载和采集!