文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python实现百度贴吧自动顶贴机

2023-01-31 00:18

关注

开发这款小工具,我们需要做一些准备:

  • 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()

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯