文章目录

  • 写在前面
  • 包和全局变量
  • 获取已有页数
  • 评论模块
  • 控制函数
  • 写在后面

写在前面

作为一个水笔,我的梦想是无休止的灌水,无休止的经验+3,所以写了这么一个东西帮我灌水!需要的参数是cookie中的BDUSS,如何获取,咳咳,百度一下就好了嘛。

包和全局变量

#网页请求
import requests
#对变量进行深拷贝
import copy
#时间、正则
import time,re
#网页解析
from bs4 import BeautifulSoup as bs
#请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",}
#拷贝一个请求头用于评论,等下会补充一个字段
headers_send = copy.copy(headers)
#获取tbs的接口,tbs用于验证用户身份的有效性
TBS_URL = "http://tieba.baidu.com/dc/common/tbs"
#贴吧的评论接口
ADD_URL = "https://tieba.baidu.com/f/commit/post/add"

获取已有页数

"""
url为当前页的地址,tid是帖子唯一标识符,是url中的一串数字
get_page字段默认为False,此时会输出帖子已有的评论
指定为True时,会补齐headers并中断函数
"""
def get_comment(url,tid,get_page=False):#请求帖子的第一页,不需要带cookiereq = requests.get(url = url,headers = headers)#正则匹配,获取帖子总页数,会匹配到两个字段,都是一样的pattern = re.compile('<span class="red">(.*?)</span>')page_num = int(re.findall(pattern,req.text)[0])#如果get_page为True,则为headers添加Referer字段#缺少此字段的话,评论发送成功但无法显示if get_page:headers_send['Referer'] = 'https://tieba.baidu.com/p/{}?pn={}'.format(tid,page_num)returnelse:#更改编码格式req.encoding = 'utf-8'#利用bs4解析网页,抓取评论html = bs(req.text,'lxml')comments = html.find_all('div',class_ = 'd_post_content j_d_post_content')#逐条输出,调用strip方法删除开头的空格#注意,无法输出滑稽等泡泡表情(图片什么的更不要想了)for comment in comments:print(comment.text.strip())#返回帖子总页数,用于抓取余下的评论return page_num

评论模块

"""
tid为帖子唯一标识符,content为灌水内容
Cookie仅需要BDUSS,tbs用于验证用户身份的合法性
"""
def send_comment(tid,content,Cookie,tbs):#构造post请求所需参数data = {'tid': tid,"tbs": tbs,'content': content,}#带上参数发起post请求req = requests.post(url = ADD_URL,data = data,cookies = Cookie,headers = headers_send)#获取post请求的response信息,并转换为json字典post_status = req.json()#如果发送成功的话,err_code是0if post_status['err_code'] == 0:print('{}发布成功'.format(content))else:#输出错误信息print(post_status)

控制函数

#这里预定义了一个参数,默认为False
#此时不会发起灌水,而只是获取已有楼层信息
def run(send:bool = False):#要灌水的帖子地址,后面一串星号就是帖子的tidurl = "https://tieba.baidu.com/p/**********"#用split方法将tid分离出来tid = url.split('/')[-1]#如果send为False,则输出已有楼层if not send:#获取第一页的同时获取总页数page_num = get_comment(url = url,tid = tid)#总页数超过一页才有继续执行的必要if page_num >= 2:for i in range(2,page_num + 1):#拼接当前页的urlurl = "https://tieba.baidu.com/p/{}?pn={}".format(tid,i)#获取当前页的评论get_comment(url = url,tid = tid)#身为爬虫一定要有基本的节操....time.sleep(3)#如果send为Trueelse: #调用get_comment函数补充headers_postget_comment(url = url,get_page = True,tid = tid)#在这里写你的BDUSS,至于如何获取,百度一下嘛!Cookie = {'BDUSS':''}#经验加3,岂不美哉?content = '经验加3!告辞!'#获取tbs,获取一次就够了,这里必须带上cookietbs = requests.post(url=TBS_URL, headers=headers_get, cookies=Cookie).json()['tbs']"""开始灌水吧!!!10次不够改成100次当然,你肯定不想一直对同一个帖子灌水可以写个函数批量获取帖子链接本篇博客里面当然没有这种函数"""for i in range(10):send_comment(tid = tid,content = content,Cookie = Cookie,tbs = tbs)#暂停10秒,否则百度会化身大禹来治你!time.sleep(10)#入口函数
if __name__ == '__main__':#要灌水的话把参数改成Truerun(send = False)

写在后面

最近还写了requests贴吧签到脚本,部署到服务器就能实现云签到,对单个贴吧签到只需要BDUSS和贴吧名,前提是已关注对应的吧,获取所有关注的吧则需要额外的PTOKEN或STOKEN字段(两者选其一,BDUSS和PTOEKN是获取STOKEN的关键,获取关注的吧需要BDUSS和STOKEN),目前不清楚PTOKEN的生成规则,看着像32位小写的md5密文。抽空整理一下再写一篇文章。

Python贴吧灌水脚本相关推荐

  1. 用Python提取CSDN灌水乐园的帖子

    无聊的很,写了个程序来提取CSDN灌水乐园的帖子.主要使用了urllib和re两个库. 可以提取帖子的标题,链接,分值和回复数. 代码如下:(就不解释了) # -*- coding: utf-8 -* ...

  2. 微信朋友圈python广告投了多少钱_朋友圈广告的评论区,当代人的灌水BBS

    记者 | 马越 编辑 | 牙韩翔 1 如果你最近几天都忍住没发过朋友圈,也没给任何人点赞评论,却冷不防多了个小红点提醒--没错,八成是又有人收到Python的广告了. 6张不明所以的图片,加上20个字 ...

  3. php 机数,PHP实现自动刷数和“灌水”机

    今天无意间看到一个网站,它的计数器能够在静态页里更新,我想,应该是使用js来做的,打开源代码一看,果然是: <div align=center><SPAN class=Article ...

  4. byr论坛灌水小工具

    原来写过一个模拟登陆byr论坛的脚本:一个CURL模拟登陆论坛的脚本+cookie伪造的方法 这次改了改,就成了一个小小的灌水机器人. 直接贴代码了: <?php /*** @author : ...

  5. 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:青塔人才.知乎Molecule 7月10日,来自徐州工程学 ...

  6. 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水

    点击上方"视学算法",选择加"星标"置顶 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI算法的发展,真有那么迅猛吗? ...

  7. 同盾反欺诈云防垃圾灌水帖体验分享

    年初将留言本改成了松松论坛,解决了留言本很多问题,也有了互动性,增强了粘性. 不过随后遇到了很多问题,尤其是垃圾贴的问题困扰了我们很久,有一段时间有人用论坛群发器发布了很多垃圾贴,原本只有几千条的帖子 ...

  8. Python selenium巧用Javascript脚本注入解决按钮点选问题

    Python selenium巧用Javascript脚本注入解决按钮点选问题 参考文章: (1)Python selenium巧用Javascript脚本注入解决按钮点选问题 (2)https:// ...

  9. 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 这不是一件光彩的事情. 昨天登上GitHub趋势热榜第一的阿波罗11号(Apollo 11)代码仓库,获得了3万多标星称赞,但也同时惨遭中文 ...

  10. python导入本地文件-Python使用import导入本地脚本及导入模块的技巧总结

    本文实例讲述了Python使用import导入本地脚本及导入模块的技巧.分享给大家供大家参考,具体如下: 导入本地脚本 import 如果你要导入的 Python 脚本与当前脚本位于同一个目录下,只需 ...

最新文章

  1. nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问
  2. java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
  3. 转载 Net多线程编程—System.Threading.Tasks.Parallel
  4. 数字图像处理总结(冈萨雷斯版)
  5. LeetCode刷题(19)
  6. python修饰器执行步骤_Python修饰器学习总结
  7. 技巧:MacOS 中快速复制文件或文件夹路径
  8. Codeforces Round #419 Div. 1
  9. 大屏可视化项目之智慧楼宇 智慧园区项目 智慧城市项目 智慧水库项目 RayData 效果 U3D项目 UE4项目 ventuz 系列 三维可视化 大屏可视化
  10. 关于luarocks
  11. leetcode79 word serach 解题报告
  12. 《大学“电路分析基础”课程实验合集.实验一》丨元器件的检测及万用表的使用
  13. Option3X 5G 全网部署(基于 IUV_5G 软件)
  14. 2.东软跨境电商数仓项目技术选型
  15. 数值计算——线性最小二乘问题
  16. 【NB-ioT模组】移远BC35-G 基于STM32连接电信云(附代码)
  17. DIJ(单源次短路) - Two Paths - HDU 6181
  18. python ogr_解决python ogr shp字段写入中文乱码的问题
  19. 2017 9 25翁凯html学习记录
  20. 天津室内设计培训班:3分钟带你了解室内设计的6大原则

热门文章

  1. oracle如何判断节假日,oracle function 用于判断是否为节假日
  2. python中string什么意思_Python:string是什么意思
  3. html中div背景颜色渐变(透明 对角 附赠颜色查询对照表)
  4. ORA-20011: Approximate NDV failed: ORA-00600: internal error code, arguments
  5. 青龙羊毛---小龙传奇
  6. Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶
  7. mongodb数据库
  8. 删除MAC电脑中卸载PS后在launchpad中残留的图标
  9. 少年:Scala 学一下
  10. HTTP API 认证授权术