1. 程式人生 > >用selenium實現百度貼吧自動發帖

用selenium實現百度貼吧自動發帖

rep 都是 圖片 ec2 blog F12 pro inb web

寫完前面兩篇以後,就打算寫個百度貼吧自動發帖程序,結果研究了好久,發現比預想的難太多了。。。
一開始打算用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,還有很多地方沒有研究明白,但是這玩意功能是真強大~

用selenium實現百度貼吧自動發帖