Python实现百度贴吧自动顶贴机
开发这款小工具,我们需要做一些准备:
- url.txt:多个需要顶起的帖子地址。
- reply:多条随机回复的内容。
- selenium:浏览器自动化测试框架
首先,我们先使用pip完成selenium的安装。
示例代码:
pip install -U selenium
接下来,我们添加对浏览器的支持,这里使用火狐浏览器。
对应Windows环境下的火狐浏览器,我们需要下载一个小程序:geckodriver.exe
下载地址:http://download.csdn.net/download/xingbb99/10245371
把下载下来的压缩包解压缩,将exe文件直接放在项目文件夹中。
这里需要注意,如果火狐浏览器不是默认安装的话,需要将浏览器的安装路径添加到系统环境变量的Path中。
完成以上准备,我们就可以进行编程了。
一、导入必需的模块
示例代码:
'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''
from selenium import webdriver # 导入网页内驱动模块
from selenium.webdriver.common.keys import Keys # 导入按键类
from selenium.webdriver.common.action_chains import ActionChains # 导入动作类
from random import choice
from time import sleep
import re
二、创建浏览器测试对象
示例代码:
profile = webdriver.FirefoxProfile(r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\nczl01ld.default')
browser = webdriver.Firefox(profile, timeout=300) # 使用profile可以实现自动登录
三、定义将Cookie添加到测试对象的函数
Cookie的获取可以在火狐浏览器中打开贴吧地址后,按F12或右键菜单中选择【查看元素】,在打开的开发工具界面中,选择网络(NetWork),点开右侧收起的消息栏,点选【Cookie】复制其中的内容。

将Cookie内容存入变量,通过正则表达式获取字段并转换为字典后,添加到浏览器测试对象中。
示例代码:
def cookie():
cookies = '''
BAIDUID = 012CCF2FAA983F21333F959FB4B2F4CF:FG=1;
BDORZ = FFFB88E999055A3F86630C64834BD6D0;
BDUSS = 9NcENVYWowcThKY3VUblVIZ3g...太长了此处省略一部分...S01U2AAABvKe1obyntaaG;
BIDUPSID = 23A4C6D0C2851099D66FBFDBA99EDF3B;
FP_UID = 0d8be11adc641cb5501f1e68270d8bea;
H_PS_PSSID = 1457_21116_22072;
MCITY = -131:;
PSINO = 1;
PSTM = 1506587758;
'''
cookiesList = re.findall(r'([\S\s]*?)=([\S\s]*?);', cookies)
for cookie in cookiesList:
ck = {'name': cookie[0].strip(), 'value': cookie[1].strip()}
browser.add_cookie(ck) # 添加cookie到浏览器测试对象
四、定义随机获取评论内容的函数
示例代码:
def get_content():
file = open('reply.txt', encoding='utf-8').readlines() # 读取所有评论
return choice(file).strip() # 随机获取一行评论并返回
五、定义写入评论并提交的函数
示例代码: def reply():
content = get_content() # 获取评论内容
js = "document.getElementById('ueditor_replace').innerHTML='%s'" % content # 编写js脚本
browser.execute_script(js) # 执行js脚本
browser.find_element_by_css_selector('.poster_submit').click() # 点击发表按钮
六、定义主程序函数
def main():
count = 0
for url in open('url.txt', encoding='utf-8').readlines(): # 逐行读取url文件
count += 1
if count >= 5: # 从url文件中的第5个地址开始回复
browser.get(url) # 打开地址
sleep(10) # 避免回复过快,地址打开后等待10秒钟。
cookie() # 添加cookie
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)") # 滚动到页面底部
reply() # 写入回复内容并提交
sleep(5) # 等待完成提交
ActionChains(browser).key_down(Keys.CONTROL).send_keys("w").key_up(Keys.CONTROL).perform() # 关闭网页
完成以上代码之后,我们运行主程序,就能够自动回复了。
注意:请申请小号进行测试,以免封号。
示例代码:
if __name__ == '__main__':
main()
完整代码
from selenium import webdriver # 导入网页内驱动模块
from selenium.webdriver.common.keys import Keys # 导入按键类
from selenium.webdriver.common.action_chains import ActionChains # 导入动作类
from random import choice
from time import sleep
import re
'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''
profile = webdriver.FirefoxProfile(r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\nczl01ld.default')
browser = webdriver.Firefox(profile, timeout=300) # 使用profile可以实现自动登录 def cookie():
cookies = '''
BAIDUID = 012CCF2FAA983F21333F959FB4B2F4CF:FG=1;
BDORZ = FFFB88E999055A3F86630C64834BD6D0;
BDUSS = 9NcENVYWowcThKY3VUblVIZ3g...太长了此处省略一部分...S01U2AAABvKe1obyntaaG;
BIDUPSID = 23A4C6D0C2851099D66FBFDBA99EDF3B;
FP_UID = 0d8be11adc641cb5501f1e68270d8bea;
H_PS_PSSID = 1457_21116_22072;
MCITY = -131:;
PSINO = 1;
PSTM = 1506587758;
'''
cookiesList = re.findall(r'([\S\s]*?)=([\S\s]*?);', cookies)
for cookie in cookiesList:
ck = {'name': cookie[0].strip(), 'value': cookie[1].strip()}
browser.add_cookie(ck) # 添加cookie到浏览器测试对象 def get_content():
file = open('reply.txt', encoding='utf-8').readlines() # 读取所有评论
return choice(file).strip() # 随机获取一行评论并返回 def reply():
content = get_content() # 获取评论内容
js = "document.getElementById('ueditor_replace').innerHTML='%s'" % content # 编写js脚本
browser.execute_script(js) # 执行js脚本
browser.find_element_by_css_selector('.poster_submit').click() # 点击发表按钮 def main():
count = 0
for url in open('url.txt', encoding='utf-8').readlines(): # 逐行读取url文件
count += 1
if count >= 5: # 从url文件中的第5个地址开始回复
browser.get(url) # 打开地址
sleep(10) # 避免回复过快,地址打开后等待10秒钟。
cookie() # 添加cookie
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)") # 滚动到页面底部
reply() # 写入回复内容并提交
sleep(5) # 等待完成提交
ActionChains(browser).key_down(Keys.CONTROL).send_keys("w").key_up(Keys.CONTROL).perform() # 关闭网页 if __name__ == '__main__':
main()
Python实现百度贴吧自动顶贴机的更多相关文章
- Python 版百度站长平台链接主动推送脚本
如果自己的网站需要被百度收录,可以在搜索结果中找到,就需要将网站的链接提交给百度.依靠百度的爬虫可能无法检索到网站所有的内容,因此可以主动将链接提交给百度. 在百度的站长平台上介绍了链接提交方法,目前 ...
- Python获取百度浏览记录
Python模拟百度登录实例详解 http://www.jb51.net/article/78406.htm Python实战计划学习作业2-1 http://blog.csdn.net/python ...
- Python爬虫-百度模拟登录(二)
上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...
- 在Python命令行和VIM中自动补全
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1. VIM下的配置: wget https://github.com/rkulla/pydiction/arc ...
- python版恶俗古风自动生成器.py
python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674c ...
- 百度移动搜索自动转码太坑爹,JS跳转地址会被抓取
这段时间碰到个很崩溃的问题,一个页面通过 script 加载请求服务端进行统计再输出js进行跳转,分为两个步骤分别统计, 打开页面通过script 请求远程服务器进行统计并输出要通过js使页面跳转的最 ...
- 解决网页在手机浏览器打开不停刷新的方案(百度的ua自动转向js问题)
一:发现问题 原有可能是网站内挂了一个百度的ua自动转向js,手机访问的话会被自动转到feiyujd.com,然后又被转到www点feiyujd点com,这样反复死循环.就形成了一直在刷新,网站一闪一 ...
- SEO -- WordPress怎设置百度站长链接自动提交
百度站长平站更新了主动推送(实时)推送的方式,受到了广大站长的好评,但是对于使用WordPress的网站来说怎么设置自动提交呢,在这里介绍一种比较简单且有效的方法.我们可以使用 WP BaiDu Su ...
- Python教程百度网盘哪里有?
Python为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象地称作"内置电池(batteries included)".带你快速入门的Py ...
随机推荐
- C#基于wpf编写的串口调试助手
支持数据保存,自定义协议解码等功能 链接:https://pan.baidu.com/s/1zvhcES4QIjpDDJGzth1qOA 提取码:lp2x
- python入门学习:2.列表简介
python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么 列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- js 文件引用传递参数
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code (function() {var hm = document.createElement(&q ...
- openvon安装
一.安装环境 1.阿里云centos7 2.关闭防火墙,selinux 临时关闭:setenforce 0 永久关闭:vim /etc/selinux/config 3.修改yum源 1)备份原有的y ...
- OpenCV3计算机视觉Python语言实现笔记(五)
图像的几何变换主要包括:平移.扩大与缩小.旋转.仿射.透视等等.图像变换是建立在矩阵运算基础上的,通过矩阵运算可以很快的找到对应关系. 1. 图像的平移 图像的平移,沿着x方向tx距离,y方向ty距离 ...
- vue 热加载问题
今天是使用vue突然发现没有热加载功能了,然后网上查了一下,配置了一些东西,并没有什么用,然后发现电脑FQ影响 vue 热加载 关掉FQ软件就好了,具体原理我也不清
- ReactJs入门教程-精华版
原文地址:https://www.cnblogs.com/Leo_wl/p/4489197.html阅读目录 ReactJs入门教程-精华版 回到目录 ReactJs入门教程-精华版 现在最热门的前端 ...
- 基于linux下的krpano的使用
鉴于目前网络上关于krpano的使用和介绍少之又少,结合自己的学习和使用经历,做个总结和记录. 1.安装 下载地址: linux https://krpano.com/forum/wbb/index. ...
- Python—time模块介绍
time 模块 在平常的代码中,我们常常需要与时间打交道.在Python中,常用的与时间处理有关的模块就包括:time,datetime,下面来介绍time模块. 在开始之前,首先要说明几点: 一.在 ...
- 16-使用Selenium模拟浏览器抓取淘宝商品美食信息
淘宝由于含有很多请求参数和加密参数,如果直接分析ajax会非常繁琐,selenium自动化测试工具可以驱动浏览器自动完成一些操作,如模拟点击.输入.下拉等,这样我们只需要关心操作而不需要关心后台发生了 ...