脚本需要selenuim环境,webdriver要与chrome浏览器内核一致。实现代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == "__main__":
browser = webdriver.Chrome() # 创建一个谷歌浏览器对象
browser.get("https://weibo.com/") # 打开网址
sleep(40)#等待40秒进行登录
browser.find_element(By.XPATH, '/html/body/div/div[2]/div[1]/div/div[1]/div/div/div[2]/div/div[1]/a[5]/div/div/div/div/img').click()
sleep(3)#点击头像
browser.find_element(By.XPATH, '/html/body/div/div[2]/div[2]/div[1]/div/div/div/div/a[4]/div/span').click()
#点击我的收藏
sleep(3)
browser.find_element(By.XPATH, '/html/body/div/div[2]/div[2]/div[2]/main/div/div/div[2]/div/div/div[1]/div/div[1]/div[1]/div/article/footer/div/div[2]/div').click()
sleep(2)
#点击评论
a=0
while a<744:
a=a+1
browser.find_element(By.XPATH, '/html/body/div/div[2]/div[2]/div[2]/main/div/div/div[2]/div/div/div[1]/div/div[1]/div[1]/div/article/div[3]/div[2]/div[3]/div/div[3]/div[1]/div/div[1]/div[2]/div[2]/div[2]/div[2]').click()
sleep(0.5)
#点击转发
browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/div/div[2]/div[3]/div/button').click()
sleep(2.5)
browser.find_element(By.XPATH, '/html/body/div/div[2]/div[2]/div[2]/main/div/div/div[2]/div/div/div[1]/div/div[1]/div[1]/div/article/div[3]/div[2]/div[3]/div/div[3]/div[2]/div/div[1]/div[2]/div[2]/div[2]/div[2]').click()
sleep(0.5)
browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/div/div[2]/div[3]/div/button').click()
sleep(2.5)
print("转发成功")
sleep(10)
browser.quit() # 关闭所有窗口
实现原理很简单,运行打开网址以后,设置了40秒的时间对界面进行扫码登录,登录以后通过模拟鼠标点击头像,我的收藏到我的收藏界面,然后自动转发我的收藏的置顶的第一天微博,可以通过模拟鼠标点击下面这三个按钮来实现转发:
因为这样的转发最后要再多点一次最开始的转发按钮,所以我是在要转发的微博下面设置两条评论,然后通过评论的转发按钮来转发微博,上下两条评论的转发按钮比上面的这种方法少按一次按钮,所有按钮的点击通过XPath路径来实现定位。