selenium操作cookies實現免密登錄,自動發微博


一直想用selenium實現個小功能,比如發微博之類的,但是有的網站在登錄會有驗證碼,沒想到太好的方法解決,於是想到利用cookies來登錄網站

第一步:獲取一個可用的cookies,獲取的cookies會保存為一個json格式的文件。不過在打開網站后,登錄操作需要自己手動進行一下,代碼中有注釋,大家可以注意一下,代碼如下:

#!/usr/bin/python
#coding=utf-8

from selenium import webdriver
import time
import json

def get_cookies(test_url):
    #保存cookies的文件
    file = 'cookies.json'
    #打開需要獲取cookies的網站
    driver = webdriver.Firefox()
    driver.implicitly_wait(5)
    driver.get(test_url)
    driver.maximize_window()
    #網站打開后,在時間內手動執行登錄操作
    time.sleep(60)
    #登錄成功后,獲取cookies並保存為json格式
    cookies = driver.get_cookies()
    fp = open(file,'w')
    json.dump(cookies,fp)
    fp.close()
    #關閉瀏覽器
    driver.close()

if __name__ == "__main__":
    url = raw_input('please input url:')
    get_cookies(url)

第二步:利用cookies登錄網站,先打開要登錄的網站,然后將cookies從之前保存的json文件讀取出來,然后添加到瀏覽器,刷新界面,即可實現登錄,然后便可以進行發微博的操作,具體元素定位,請大家百度selenium的一些基本用法,此處不再贅述。代碼中也給出了不打開瀏覽器的方式來實現功能。

代碼如下:

#!/usr/bin/python
#coding=utf-8

from selenium import webdriver
import json
import time

file = 'cookies.json'
#打開瀏覽器,若不想打開瀏覽器運行腳本,可以使用下面注釋掉的方法
driver = webdriver.Firefox()

#以headless模式運行腳本,可以實現不打開瀏覽器對網站進行操作
#option = webdriver.FirefoxOptions()
#option.add_argument(argument='-headless')
#driver = webdriver.Firefox(firefox_options=option)

#打開網址
def open_url(url):
    driver.get(url)
    driver.implicitly_wait(5)
    driver.maximize_window()

#向瀏覽器添加保存的cookies
def add_cookies():
    fp = open(file,'r')
    cookies = json.load(fp)
    fp.close()
    for cookie in cookies:
        driver.add_cookie(cookie)

if __name__ == "__main__":
    #輸入要打開的網站並打開
    test_url = raw_input('please input url:')
    open_url(test_url)
    time.sleep(5)
    #添加cookies后刷新界面,實現免密登錄
    add_cookies()
    driver.refresh()
    # 發送微博
    #定位到微博輸入框,點擊輸入框
    driver.find_element_by_xpath("//textarea[@class='W_input']").click()
    time.sleep(2)
    #輸入需要發送的內容
    driver.find_element_by_xpath("//textarea[@class='W_input']").send_keys('Test message')
    time.sleep(3)
    #關閉瀏覽器
    driver.close()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM