用selenium实现百度贴吧自动发帖
寫完前面兩篇以后,就打算寫個(gè)百度貼吧自動(dòng)發(fā)帖程序,結(jié)果研究了好久,發(fā)現(xiàn)比預(yù)想的難太多了。。。
一開始打算用requests模擬登陸,用F12抓了包,看post請(qǐng)求參數(shù):
參數(shù)也特么太多了,簡直喪心病狂,變化參數(shù)有token、tt、gid、rsakey、ppui_logintime、fp_uid、fp_info、dv、traceid、callback一共10個(gè),token、tt、rsakey之類的還好說,獲取方式比較明顯,但是fp_uid、fp_info、dv這三個(gè)研究了好久也搞不定,很明顯是js里生成的,然而我最頭疼的就是看上千行的js代碼,太痛苦了。。。
研究了幾天最終放棄,換個(gè)方案,手動(dòng)登錄獲取cookies,然后直接在程序里寫死了cookies來發(fā)帖。F12抓個(gè)發(fā)帖的包,請(qǐng)求參數(shù):
mouse_pwd、BSK。。。這都是什么鬼,實(shí)在不想再看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)
#手動(dòng)輸入驗(yàn)證碼
driver.find_element_by_id("TANGRAMPSP_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('發(fā)帖標(biāo)題')
driver.find_element_by_id("ueditor_replace").send_keys('發(fā)帖內(nèi)容')
time.sleep(2)
driver.find_element_by_xpath('//*[@id="tb_rich_poster"]/div[3]/div[5]/div/button[1]').click()
其中time.sleep(25)那里,是因?yàn)橛锌赡苄枰绦膨?yàn)證碼,所以預(yù)留的時(shí)間長一點(diǎn)。另外就是打開貼吧的url以后也需要sleep時(shí)間長一點(diǎn),否則帖子標(biāo)題那里會(huì)寫不全。
因?yàn)槭莿偨佑|selenium,還有很多地方?jīng)]有研究明白,但是這玩意功能是真強(qiáng)大~
轉(zhuǎn)載于:https://blog.51cto.com/13904513/2159452
總結(jié)
以上是生活随笔為你收集整理的用selenium实现百度贴吧自动发帖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习累了吗,来听听乔布斯的演讲吧!
- 下一篇: 计算机知识演讲稿,乔布斯的演讲稿 我们的