欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

使用python调用浏览器实现自动转发微博

发布时间:2024/8/1 python 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用python调用浏览器实现自动转发微博 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

使用python调用浏览器实现自动转发微博

视频讲解地址:  https://www.bilibili.com/video/BV1i7411B747/

# coding = utf-8 import datetime from time import sleepfrom selenium import webdriver from selenium.webdriver.chrome.options import Options # from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys# import weibo2def isElement(browser, xpathElement):try:browser.find_element_by_xpath(xpathElement)return Trueexcept:return Falseif __name__ == "__main__":# loginName = weibo2.loginName #登录微博的账户# loginPassword = weibo2.loginPassword # 登录微博的密码# print(loginName,loginPassword)loginName = '你自己的登录账户'loginPassword = '密码'successful_num = 0 # 记录转发微博成功的次数now_time = datetime.datetime.now()# 登录微博# chrome_options = Options()# chrome_options.add_argument('--headless')# chrome_options.add_argument('--disable-gpu') # 前面三行是保证是无界面启动浏览器# browser = webdriver.Chrome(chrome_options=chrome_options) # 创建一个谷歌浏览器对象browser = webdriver.Chrome() # 创建一个谷歌浏览器对象browser.get("https://passport.weibo.cn/signin/login") # 打开网址sleep(3)print("已经打开网址,等待3秒")browser.find_element_by_id('loginName').click()browser.find_element_by_id('loginName').send_keys(loginName) # 点击账户输入框输入账户print("进行账户输入")browser.find_element_by_id('loginPassword').click()browser.find_element_by_id('loginPassword').send_keys(loginPassword) # 点击密码输入框,输入密码print("进行密码输入")browser.find_element_by_id('loginAction').click() # 点击登录按钮print("进行登录点击操作")sleep(0.5)while True:try:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]').click() # 点击头像获取信息print('点击头像,获取微博数、关注数、粉丝数')breakexcept:sleep(0.5)sleep(0.5)while True:try:weibo_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[1]/i').textguanzhu_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[2]/i').textfensi_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[3]/i').textprint('微博数:', weibo_num, '关注数:', guanzhu_num, '粉丝数:', fensi_num)break # 跳出循环except:sleep(0.5)browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]/i').click() # 点击返回# 获取微博热搜browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/a/aside/label/div').click() # 点击搜索输入框print("点击搜索的输入框")while True:try:browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[1]/div[2]/div/div/div[8]/div').click() # 点击微博热搜,查看所有的微博热搜print("点击微博热搜")breakexcept:sleep(0.5)sleep(8)xpath1 = browser.find_elements_by_xpath('/html/body/div/div[1]/div[1]/div/div/div/div/div/div/div/div/span[2]/span[1]') # 获取热搜信息# /html/body/div/div[1]/div[1]/div[2]/div/div/div/div/div/div/div/span[2]/span[1]# /html/body/div/div[1]/div[1]/div[2]/div/div/div/div/div/div/div/span[2]/span[1]hot_text = []for j in xpath1: # 需要研究使用枚举型进行循环输出,将标题信息依次打印输出hot_text.append(j.text)print(hot_text)# 返回可以进行搜索的界面browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[1]/div[1]/div/div/div/a').click() # 进行点击返回操作,返回到可以点击微博热搜的界面# browser.find_element_by_xpath(# '//*[@id="app"]/div[1]/div[1]/div[1]/div/div/div[1]').click() # 进行点击返回操作,返回到登录后显示的界面# browser.find_element_by_xpath(# ' //*[@id="app"]/div[1]/div[1]/div[1]/div/div/div[2]/form/input').click() # 点击搜索的输入框zhuanfa_xpath_list = ['/html/body/div/div[1]/div[1]/div[3]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[3]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[4]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[4]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[5]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[5]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[6]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[6]/div/div/footer/div[1]']# 开始针对每一个热搜话题,进行搜索for every_hot in hot_text:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').clear() # 清空进行搜索的输入框browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').send_keys(every_hot) # 输入搜索的内容browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').send_keys(Keys.ENTER) # 模拟键盘回车进行搜索sleep(5)for i in range(len(zhuanfa_xpath_list)): # 完成进行转发的功能try:browser.find_element_by_xpath(zhuanfa_xpath_list[i]).click() # 点击第一篇文章的转发sleep(3)browser.find_element_by_xpath('//*[@id="app"]/div[1]/div/header/div[3]/a').click() # 点击第一篇文章的发送sleep(2)isXpathElement = u'/html/body/div/div[2]/div[1]/div[2]/footer/div/a'truenFalse = isElement(browser, isXpathElement) # 调用方法if truenFalse is False:successful_num += 1print(every_hot+'\t第' + str(i+1) + '次转发成功')sleep(3)else : # 执行过程中出现弹窗等意外情况,转发失败print('执行过程中出现弹窗等意外情况,转发失败')breakexcept:if isElement(browser,'/html/body/div/div[2]/div[1]/div[2]/header/h3') is True :print('转发失败,点击确定按钮,并返回')browser.find_element_by_xpath('/html/body/div/div[2]/div[1]/div[2]/footer/div/a').click() # 点击确定按钮browser.find_element_by_xpath('/html/body/div/div[1]/div/header/div[1]/i').click() # 点击返回按钮break# print(every_hot+'\t第' + str(i+1) + '次转发失败')# pinglun_neirong = '欢迎关注我,看实时热点,,现在我们关注: ' + every_hot# browser.find_element_by_xpath(# '/html/body/div/div[1]/div/main/div[1]/div/span/textarea[1]').send_keys(pinglun_neirong)sleep(5)browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[1]/i').click() # 点击进行返回while True:try:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]').click() # 点击头像获取信息print('点击头像,获取微博数、关注数、粉丝数')breakexcept:sleep(1)while True:try:weibo_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[1]/i').textguanzhu_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[2]/i').textfensi_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[3]/i').textprint('微博数:', weibo_num, '关注数:', guanzhu_num, '粉丝数:', fensi_num)break # 跳出循环except:sleep(1)print("转发任务完成")print('开始时间', now_time)print('结束时间', datetime.datetime.now())print('这次共转发微博' + str(successful_num) + '次')print('执行转发任务前 微博数:', weibo_num, '关注数:', guanzhu_num, '粉丝数:', fensi_num)print('执行转发任务后 微博数:', weibo_num2, '关注数:',guanzhu_num2, '粉丝数:', fensi_num2)sleep(100)browser.quit() # 关闭所有窗口

 

 

 

总结

以上是生活随笔为你收集整理的使用python调用浏览器实现自动转发微博的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。