python中動態獲取cookies
02-10
在爬蟲中,我們經常要使用cookies保持登陸,一般我們使用urllib2構建cookies,這次換個姿勢,用phantomjs動態獲取cookies。
推薦閱讀:
PhantomJS 是一個基於 WebKit 的伺服器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。 PhantomJS 可以用於 頁面自動化 , 網路監測 , 網頁截屏 ,以及 無界面測試 等。
接下來我們上代碼:
要在python中調用phantomjs 需要用到 selenium,
這裡以aso100 關鍵詞排名網站為例子
from selenium import webdriver
import timedef get_cookies():url = https://aso100.com/account/signin
#service_args 可以傳入phantomjs 的參數,這裡是ssl認證 drive = webdriver.PhantomJS(service_args=[--ssl-protocol=any]) drive.get(url) drive.find_element_by_id(username).send_keys(yourname)drive.find_element_by_id(password).send_keys(yourpassword)
#截圖登錄界面,獲取到驗證碼 drive.save_screenshot(aso100.png) code = input(請輸入驗證碼>>>>) drive.find_element_by_id(code).send_keys(code)drive.find_element_by_id(submit).click()
#這一步很重要,需要等待phantomjs 載入完再去取得cookies time.sleep(5) cookie_list = drive.get_cookies()cookie_dict = {}
for cookie in cookie_list: cookie_dict[cookie[name]] = cookie[value] drive.quit() # print(cookie_dict) return cookie_dict記住phantomjs是一個沙盒操作,當傳遞了賬號密碼一定需要調用sleep等待一下這樣才能獲取到cookies;(不過這是一個半自動的。。因為驗證碼那塊的識別需要自己打開aso100.png然後輸入,這一塊涉及到了圖像處理識別,我也很無奈啊)當然phantomjs還有很多其他方法操作DOM,例如class,或者xpath。以上我們就獲取到了cooikes,使用requests的時候傳入就好了,每個網站的cookies存活時間都不一樣,過期了再調用一下就好啦~這是我的博客:https://daixk.github.io/ (搭好沒多久。。)推薦閱讀:
※黃哥Python,從一個簡單問題說起
※Tornado 非同步非阻塞淺析
※黃哥Python,2017-9-22出題了。
※人人都愛數據科學家!Python數據科學精華實戰課程系列教程連載 ----長期更新中,敬請關注!
TAG:Python |