新聞中心
一直想用selenium實(shí)現(xiàn)個(gè)小功能,比如發(fā)微博之類(lèi)的,但是有的網(wǎng)站在登錄會(huì)有驗(yàn)證碼,沒(méi)想到太好的方法解決,于是想到利用cookies來(lái)登錄網(wǎng)站。

目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、安陽(yáng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
獲取一個(gè)可用的cookies
獲取的cookies會(huì)保存為一個(gè)json格式的文件。不過(guò)在打開(kāi)網(wǎng)站后,登錄操作需要自己手動(dòng)進(jìn)行一下,代碼中有注釋?zhuān)蠹铱梢宰⒁庖幌拢?/p>
代碼如下:
#!/usr/bin/python
#coding=utf-8
from selenium import webdriver
import time
import json
def get_cookies(test_url):
#保存cookies的文件
file = 'cookies.json'
#打開(kāi)需要獲取cookies的網(wǎng)站
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get(test_url)
driver.maximize_window()
#網(wǎng)站打開(kāi)后,在時(shí)間內(nèi)手動(dòng)執(zhí)行登錄操作
time.sleep(60)
#登錄成功后,獲取cookies并保存為json格式
cookies = driver.get_cookies()
fp = open(file,'w')
json.dump(cookies,fp)
fp.close()
#關(guān)閉瀏覽器
driver.close()
if __name__ == "__main__":
url = raw_input('please input url:')
get_cookies(url)
利用cookies登錄網(wǎng)站
先打開(kāi)要登錄的網(wǎng)站,然后將cookies從之前保存的json文件讀取出來(lái),然后添加到瀏覽器,刷新界面,即可實(shí)現(xiàn)登錄,然后便可以進(jìn)行發(fā)微博的操作,具體元素定位,請(qǐng)大家百度selenium的一些基本用法,此處不再贅述。代碼中也給出了不打開(kāi)瀏覽器的方式來(lái)實(shí)現(xiàn)功能。
代碼如下:
#!/usr/bin/python
#coding=utf-8
from selenium import webdriver
import json
import time
file = 'cookies.json'
#打開(kāi)瀏覽器,若不想打開(kāi)瀏覽器運(yùn)行腳本,可以使用下面注釋掉的方法
driver = webdriver.Firefox()
#以headless模式運(yùn)行腳本,可以實(shí)現(xiàn)不打開(kāi)瀏覽器對(duì)網(wǎng)站進(jìn)行操作
#option = webdriver.FirefoxOptions()
#option.add_argument(argument='-headless')
#driver = webdriver.Firefox(firefox_options=option)
#打開(kāi)網(wǎng)址
def open_url(url):
driver.get(url)
driver.implicitly_wait(5)
driver.maximize_window()
#向?yàn)g覽器添加保存的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__":
#輸入要打開(kāi)的網(wǎng)站并打開(kāi)
test_url = raw_input('please input url:')
open_url(test_url)
time.sleep(5)
#添加cookies后刷新界面,實(shí)現(xiàn)免密登錄
add_cookies()
driver.refresh()
# 發(fā)送微博
#定位到微博輸入框,點(diǎn)擊輸入框
driver.find_element_by_xpath("http://textarea[@class='W_input']").click()
time.sleep(2)
#輸入需要發(fā)送的內(nèi)容
driver.find_element_by_xpath("http://textarea[@class='W_input']").send_keys('Test message')
time.sleep(3)
#點(diǎn)擊發(fā)送按鈕
driver.find_element
本文題目:使用selenium實(shí)現(xiàn)cookies免密登錄
標(biāo)題來(lái)源:http://m.fisionsoft.com.cn/article/djdsees.html


咨詢(xún)
建站咨詢(xún)
