当前位置:首页 > 娱乐

【微博怎么发】“珍爱生命,远离催更”,教你用 Python 自动发送微博,拒绝断更

一、软件准备

1.安装python环境

必须先安装Python环境,然后安装Python开发工具。

如果你还没有安装,可以参考以下文章:

如果仅用Python来处理数据、爬虫、数据分析或者自动化脚本、机器学习等,建议使用Python基础环境+jupyter即可,安装使用参考Windows/Mac 安装、使用Python环境+jupyter notebook

2.安装selenium库

pip install selenium 复制代码

3.下载谷歌浏览器驱动chromedriver,下载地址:n…

需要选择对应的谷歌浏览器版本,(谷歌浏览器访问:chrome://settings/help,即可查看版本)

下载好后,随便发到一个路径下即可(简单点最好,记住路径)。

二、实现方法

2.1 使用 Selenium 工具自动化模拟浏览器,当前重点是了解对元素的定位

我们想定位一个元素,可以通过 id、name、class、tag、链接上的全部文本、链接上的部分文本、XPath 或者 CSS 进行定位,在 Selenium Webdriver 中也提供了这 8 种方法方便我们定位元素。

1)通过 id 定位:我们可以使用 find_element_by_id() 函数。比如我们想定位 id=loginName 的元素,就可以使用brow(“loginName”)。

2)通过 name 定位:我们可以使用 find_element_by_name() 函数,比如我们想要对 name=key_word 的元素进行定位,就可以使用 brow(“key_word”)。

3)通过 class 定位:可以使用 find_element_by_class_name() 函数。

4)通过 tag 定位:使用 find_element_by_tag_name() 函数。

5)通过 link 上的完整文本定位:使用 find_element_by_link_text() 函数。

6)通过 link 上的部分文本定位:使用 find_element_by_partial_link_text() 函数。有时候超链接上的文本很长,我们通过查找部分文本内容就可以定位。

7)通过 XPath 定位:使用 find_element_by_xpath() 函数。使用 XPath 定位的通用性比较好,因为当 id、name、class 为多个,或者元素没有这些属性值的时候,XPath 定位可以帮我们完成任务。

8)通过 CSS 定位:使用 find_element_by_css_selector() 函数。CSS 定位也是常用的定位方法,相比于 XPath 来说更简洁。

2.2 对元素进行的操作包括

1)清空输入框的内容:使用 clear() 函数;

2)在输入框中输入内容:使用 send_keys(content) 函数传入要输入的文本;

3)点击按钮:使用 click() 函数,如果元素是个按钮或者链接的时候,可以点击操作;

4)提交表单:使用 submit() 函数,元素对象为一个表单的时候,可以提交表单;

2.3 注意

由于selenium打开的chrome是原始设置的,所以访问微博首页时一定会弹出来是否提示消息的弹窗,导致不能定位到输入框。可使用如下方法关闭弹窗:

prefs = {";: 2} 复制代码

2.4 如何定位元素

点击需要定位的元素,然后右键选择检查,可以调出谷歌开发者工具。

获取xpath 路径,点击谷歌开发者工具左上角的小键头(选择元素),选择自己要查看的地方的,开发者工具就会自动定位到对应元素的源码位置,选中对应源码,然后右键,选择copy-> Copy XPath即可获取到xpath 路径。

另外: 可以下载 XPath Helper插件,安装后 在网页上选取想要提取的元素, 点击右键 选中 检查 然后 开发者工具自动打开 你可以看到 HTML代码 ,选中然后再次点击右键,选中copy 里的 copy to xpath这样就得到了xpath的值了。

三、完整代码

实现思路: 其实和平时我们正常操作一样,只不过这里,全程由selenium来实现,模拟点击和输入,所以整个过程为:打开登录页面->输入账号密码->点击登录按钮->在发微博框输入发送内容->点击发送按钮->关闭浏览器(自选)。

3.1 目前自动输入账号可能会弹出登录保护需扫二维码验证

from selenium import webdriver from import Service import time ''' 自动发布微博 content:发送内容 username:微博账号 password:微博密码 ''' def post_weibo(content, username, password): # 加载谷歌浏览器驱动 path = r'C:/MyEnv ' # 指定驱动存放目录 ser = Service(path) chrome_options = webdriver.ChromeOptions() # 把允许提示这个弹窗关闭 prefs = {";: 2} c("prefs", prefs) driver = webdriver.Chrome(service=ser, options=chrome_options) driver.maximize_window() # 设置页面最大化,避免元素被隐藏 print('# get打开微博主页') url = 'http://weibo.com/login.php' driver.get(url) # get打开微博主页 (5) # 页面加载完全 print('找到用户名 密码输入框') input_account = driver.find_element_by_id('loginname') # 找到用户名输入框 input_psw = driver.find_element_by_css_selector('input[type="password"]') # 找到密码输入框 # 输入用户名和密码 in(username) in(password) print('# 找到登录按钮 //div[@node-type="normal_form"]//div[@class="info_list login_btn"]/a') bt_logoin = driver.find_element_by_xpath('//div[@node-type="normal_form"]//div[@class="info_list login_btn"]/a') # 找到登录按钮 b() # 点击登录 # 等待页面加载完毕 #有的可能需要登录保护,需扫码确认下 (40) # 登录后 默认到首页,有微博发送框 print('# 找到文本输入框 输入内容 //*[@id="homeWrap"]/div[1]/div/div[1]/div/textarea') weibo_content = driver.find_element_by_xpath('//*[@id="homeWrap"]/div[1]/div/div[1]/div/textarea') weibo_con(content) print('# 点击发送按钮 //*[@id="homeWrap"]/div[1]/div/div[4]/div/button') bt_push = driver.find_element_by_xpath('//*[@id="homeWrap"]/div[1]/div/div[4]/div/button') b() # 点击发布 (15) driver.close() # 关闭浏览器 if __name__ == '__main__': username = '微博用户名' password = "微博密码" # 自动发微博 content = '每天进步一点' post_weibo(content, username, password) 复制代码

通过cookie进行登录可跳过扫码登录,cookie过期后重新获取下cookie就可以了。

导入第三方包

from selenium import webdriver from import Service import time import requests import json 复制代码

获取cookie到本地

这里主要利用了selenium的get_cookies函数获取cookies。

# 获取cookies 到本地 def get_cookies(driver): driver.get('https://weibo.com/login.php') (20) # 留时间进行扫码 Cookies = driver.get_cookies() # 获取list的cookies jsCookies = j(Cookies) # 转换成字符串保存 with open('cookies.txt', 'w') as f: f.write(jsCookies) print('cookies已重新写入!') # 读取本地的cookies def read_cookies(): with open('cookies.txt', 'r', encoding='utf8') as f: Cookies = j()) cookies = [] for cookie in Cookies: cookie_dict = { 'domain': '.weibo.com', 'name': cookie.get('name'), 'value': cookie.get('value'), 'expires': '', 'path': '/', 'httpOnly': False, 'HostOnly': False, 'Secure': False } cookies.append(cookie_dict) return cookies 复制代码

利用cookie登录微博并发送文字 完整代码

# 初始化浏览器 打开微博登录页面 def init_browser(): path = r'C:/MyEnv ' # 指定驱动存放目录 ser = Service(path) chrome_options = webdriver.ChromeOptions() # 把允许提示这个弹窗关闭 prefs = {";: 2} c("prefs", prefs) driver = webdriver.Chrome(service=ser, options=chrome_options) driver.maximize_window() driver.get('https://weibo.com/login.php') return driver # 读取cookies 登录微博 def login_weibo(driver): cookies = read_cookies() for cookie in cookies: driver.add_cookie(cookie) (3) driver.refresh() # 刷新网页 # 发布微博 def post_weibo(content, driver): (5) weibo_content = driver.find_element_by_xpath('//*[ @id ="homeWrap"]/div[1]/div/div[1]/div/textarea') weibo_con(content) bt_push = driver.find_element_by_xpath('//*[@id="homeWrap"]/div[1]/div/div[4]/div/button') b() # 点击发布 (5) driver.close() # 关闭浏览器 if __name__ == '__main__': # cookie登录微博 driver = init_browser() login_weibo(driver) # 自动发微博 content = '今天的天气真不错~' post_weibo(content, driver) 复制代码

拓展:检测cookies有效性

检测方法:利用本地cookies向微博发送get请求,如果返回的页面源码中包含自己的微博昵称,就说明cookies还有效,否则无效。

# 检测cookies的有效性 def check_cookies(): # 读取本地cookies cookies = read_cookies() s = reque() for cookie in cookies: s.cookies.set(cookie['name'], cookie['value']) response = s.get(";) html_t = re # 检测页面是否包含我的微博用户名 if '老表max' in html_t: return True else: return False 复制代码

拓展:定时每日自动发送

可以参考上一篇文章:如何用Python发送告警通知到钉钉?

包括如何设置守护进程,在上一篇文章中也有介绍。

from a import BlockingSchedulera ''' 每天早上9:00 发送一条微博 ''' def every_day_nine(): # cookie登录微博 driver = init_browser() login_weibo(driver) req = reque(';) get_sentence = req.json() content = f'【每日一言】{get_sentence["data"]} 来自:一言api' # 自动发微博 post_weibo(content, driver) # 选择BlockingScheduler调度器 sched = BlockingScheduler(timezone='Asia/Shanghai') # job_every_nine 每天早上9点运行一次 日常发送 (every_day_nine, 'cron', hour=9) # 启动定时任务 () 复制代码

下期预告

凡是自动化的东西,都可以发抖服务器上持续的去跑,当然,本地电脑也可以进行学习使用。

下一期,感觉有太多东西需要更新了,慢慢来吧,提前祝大家元旦快乐~2022,我准备好了!

1.《【微博怎么发】“珍爱生命,远离催更”,教你用 Python 自动发送微博,拒绝断更》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【微博怎么发】“珍爱生命,远离催更”,教你用 Python 自动发送微博,拒绝断更》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/3224695.html

上一篇

【石黑英雄】假面骑士:你知道哪些“神颜”主角呢?观众:我选南光太郎

手机上微博怎么发私信0?终于找到答案了微博推“微博聊天网页版” 微信看完很无语

手机上微博怎么发私信0相关介绍,没有余热,今天新浪微博悄悄地上了“微博聊天网络版”。 “微博聊天网页版”可以看做是私信的升级版,但用起来要比私信方便不少。同时,微博自带的私信功能也会被保留。 功能方面,“微博聊天网页版”支持Chro...

【微博怎么发】Python 教你自动发微博,每日一句英语

  • 【微博怎么发】Python 教你自动发微博,每日一句英语
  • 【微博怎么发】Python 教你自动发微博,每日一句英语
  • 【微博怎么发】Python 教你自动发微博,每日一句英语

电脑新浪微博怎么发私信?我来告诉你答案微博怎么群发信息给粉丝私信 群发功能在哪介绍

电脑新浪微博怎么发私信相关介绍,[闽南网] Weibo批量传输功能在日常用户体验中占有重要地位,为用户提供了大量便捷的信息传输。让我们看一下此功能的使用工作共享。 在微博里群发功能使用过程讲解 在网页上搜索新浪微博,输入账号进行登录...

电脑新浪微博怎么发私信?我来告诉你答案微博几个常用的功能

  • 电脑新浪微博怎么发私信?我来告诉你答案微博几个常用的功能
  • 电脑新浪微博怎么发私信?我来告诉你答案微博几个常用的功能
  • 电脑新浪微博怎么发私信?我来告诉你答案微博几个常用的功能

长微博怎么发啊?总结很全面速看!希望下一代能看着国产动画电影长大

  • 长微博怎么发啊?总结很全面速看!希望下一代能看着国产动画电影长大
  • 长微博怎么发啊?总结很全面速看!希望下一代能看着国产动画电影长大
  • 长微博怎么发啊?总结很全面速看!希望下一代能看着国产动画电影长大

关于长微博怎么发啊,你需要知道这些36氪专访|快看CEO陈安妮:NFT最关键的是社区和IP,出海是未来重点战略方向

长微博怎么发啊相关介绍,7月中旬下午,36氪在活动酒店见到CEO陈安妮,她刚刚结束年度发布会演讲,接着去见投资人。 这位92年的CEO,在微博上曾经依靠漫画走红,拥有千万粉丝,但如今,她几乎不再发微博,最近几年,每年年中的发...

【微博怎么发】如何发布热门微博?下面几招告诉你

  • 【微博怎么发】如何发布热门微博?下面几招告诉你
  • 【微博怎么发】如何发布热门微博?下面几招告诉你
  • 【微博怎么发】如何发布热门微博?下面几招告诉你

【微博怎么发】微博长文在哪里发 微博长文发布教程分享

  • 【微博怎么发】微博长文在哪里发 微博长文发布教程分享
  • 【微博怎么发】微博长文在哪里发 微博长文发布教程分享
  • 【微博怎么发】微博长文在哪里发 微博长文发布教程分享