用selenium实现百度贴吧自动发帖

写完前面两篇以后,就打算写个百度贴吧自动发帖程序,结果研究了好久,发现比预想的难太多了。。。
一开始打算用requests模拟登陆,用F12抓了包,看post请求参数:


参数也特么太多了,简直丧心病狂,变化参数有token、tt、gid、rsakey、ppui_logintime、fp_uid、fp_info、dv、traceid、callback一共10个,token、tt、rsakey之类的还好说,获取方式比较明显,但是fp_uid、fp_info、dv这三个研究了好久也搞不定,很明显是js里生成的,然而我最头疼的就是看上千行的js代码,太痛苦了。。。
研究了几天最终放弃,换个方案,手动登录获取cookies,然后直接在程序里写死了cookies来发帖。F12抓个发帖的包,请求参数:

mouse_pwd、BSK。。。这都是什么鬼,实在不想再看js了,再次放弃。
没办法了,只有祭出大招了:selenium,下面上代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()
driver.get(‘https://passport.baidu.com/v2/?login‘)
time.sleep(2)
driver.find_element_by_id("TANGRAMPSP_3__footerULoginBtn").click()
driver.find_element_by_name("userName").clear()
driver.find_element_by_name("userName").send_keys(‘用户名‘)
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys(‘密码‘)
time.sleep(2)
#手动输入验证码
driver.find_element_by_id("TANGRAM
PSP_3__submit").click()
time.sleep(25)
driver.get(‘https://tieba.baidu.com/f?kw=贴吧名&fr=index‘)
time.sleep(6)
driver.find_element_by_name("title").send_keys(‘发帖标题‘)
driver.find_element_by_id("ueditor_replace").send_keys(‘发帖内容‘)
time.sleep(2)
driver.find_element_by_xpath(‘//*[@id="tb_rich_poster"]/div[3]/div[5]/div/button[1]‘).click()

其中time.sleep(25)那里,是因为有可能需要短信验证码,所以预留的时间长一点。另外就是打开贴吧的url以后也需要sleep时间长一点,否则帖子标题那里会写不全。
因为是刚接触selenium,还有很多地方没有研究明白,但是这玩意功能是真强大~

原文地址:http://blog.51cto.com/13904513/2159452

时间: 2025-01-10 21:30:05

用selenium实现百度贴吧自动发帖的相关文章

C++、VC++、MFC网页自动注册、登陆、发帖、留言,QQ注册、QQ申请器源码、注册邮箱源码、自动发帖源码

C++.VC++.MFC网页自动注册.登陆.发帖.留言,QQ注册.QQ申请器源码.注册邮箱源码.自动发帖源码 参考资料: 自动登录yahoo邮箱http://blog.csdn.net/suisuibianbian/archive/2005/12/12/550260.aspx VC采集网页所有表单域http://blog.csdn.net/fjssharpsword/archive/2010/12/17/6081689.aspx 说说这类软件最常见的使用方式吧. 也许你经常看到有人发布了以下这类

百度地图之自动提示--autoComplete

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title>百度地图之

js 实现类似百度联想输入,自动补全功能

js  实现类似百度联想输入,自动补全功能 方案一: search是搜索框id="search" 1 //点击页面隐藏自动补全提示框 2 document.onclick = function (e) { 3 var e = e ? e : window.event; 4 var tar = e.srcElement || e.target; 5 if (tar.id != search) { 6 if ($("#" + auto).is(":visibl

Chrome: Stylish 在百度上不能自动更新

先上两张图: 如此华丽的效果居然不能自动应用,果然我大天朝诸事不顺,人家Google就没那么多事…… 坑:设置完Stylish后,百度搜索页需要手动刷新一次才能显示效果. 解决方法:安装TamperMonkey,添加 “Baidu x Stylish Fix” https://greasyfork.org/scripts/175-baidu-x-stylish-fix/code/Baidu%20x%20Stylish%20Fix.user.js;和 “百度搜索Stylish样式修复”  http

[Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(InfoBox),这也是毕业设计实体对齐和属性的对齐的语料库前期准备工作.希望文章对你有所帮助~ 源代码 1 # coding=utf-8 2 """ 3 Created on 2015-09-04 @author: Eastmount 4 """ 5

用python+selenium从百度获取本地明日的天气信息并根据温度情况邮件提醒

从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞, 如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温. 假设存在发送邮件的方法self.send_email(email_content) 代码如下: #coding=utf-8 from selenium import webdriver import unittest from time import sleep class WeatherReport(unittest.TestCa

Python实验:百度搜索关键字自动打开相关URL

#! python # coding: utf-8 # python实现百度搜索关键字,并依次用浏览器打开前五个搜索结果 ## ##Beautiful Soup 是一个模块,用于从HTML 页面中提取信息(用于这个目的时,它比正则表达式好很多).BeautifulSoup 模块的名称是bs4(表示Beautiful Soup,第4 版).要安装它,需要在命令行中运行pip install beautifulsoup4 import bs4, sys, webbrowser, requests #

selenium python 百度网盘的登陆与退出

1 # -*- coding:utf-8 -*- 2 from selenium import webdriver 3 from selenium.webdriver.common.action_chains import ActionChains 4 from selenium.webdriver.support.ui import WebDriverWait 5 6 import time 7 8 driver = webdriver.Firefox(executable_path='/Us

python selenium利用 126.com id自动生成

访问的是126.com 但是教程中id是固定的,可是一查代码, id是auto-id-1476087946510 后面的数字是自动变化的. 这可怎么办呢? #coding=utf-8 from selenium import webdriver ''' 测试简单元素操作 ''' url="http://www.126.com/" driver=webdriver.Firefox() driver.get(url) driver.find_element_by_xpath(".