前言:因爲登陸反爬措施的愈來愈麻煩,甚至出現了12306這種看圖識物的無敵驗證碼,我只能說,我選擇死亡。這就衍生出了使用selenium來獲取獲取cookies。css
實例:獲取qq空間cookies,親測成功2018-3-7(注意點:chromedriver.exe的路徑輸入)html
from selenium import webdriver
import requests
import json
import time
1 def get_cookies(): 2 browser = webdriver.Chrome(executable_path="D:\SeleniumDemo-master\chromedriver.exe") 3 browser.get("https://user.qzone.qq.com/xxx/infocenter")# xxx 改成qq帳號 4 input("請登錄後按Enter") 5 #print(browser.get_cookies()) 6 cookie={} 7 for i in browser.get_cookies(): 8 cookie[i["name"]] = i["value"] 9 with open("cookies.txt","w") as f: 10 f.write(json.dumps(cookie)) 11 # time.sleep(5) 12 # button = browser.find_element_by_xpath('//*[@id="switcher_plogin"]') 13 # button.click() 14 15 #browser.close() 16 def get_content(): 17 user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" 18 with open("cookies.txt","r")as f: 19 cookies = f.read() 20 cookies = json.loads(cookies) 21 session = requests.session() 22 html = session.get("https://user.qzone.qq.com/xxx/infocenter",headers={"User-Agent":user_agent},cookies=cookies) # xxx改成qq帳號 23 print(html.text) 24 25 if __name__ == "__main__":
get_cookies()
get_content()
cookies一保存,至少短時間內是能夠省下登陸的時間。web
改進:(自動填寫帳號密碼)chrome
1 def get_cookies(): 2 """獲取cookies保存爲txt""" 3 browser = webdriver.Chrome(executable_path="D:\SeleniumDemo-master\chromedriver.exe") 4 browser.get("https://user.qzone.qq.com/") 5 6 #input("請登錄後按Enter") 7 browser.switch_to.frame("login_frame") 8 button = browser.find_element_by_css_selector('#switcher_plogin') 9 button.click() 10 account = browser.find_element_by_css_selector("#u") 11 account.clear() 12 account.send_keys("") #此處寫帳號 13 14 password = browser.find_element_by_css_selector("#p") 15 password.clear() 16 password.send_keys("") #此處寫密碼 17 18 login_button = browser.find_element_by_css_selector("#login_button") 19 login_button.click() 20 #print(browser.get_cookies()) 21 22 cookie={} 23 for i in browser.get_cookies(): 24 cookie[i["name"]] = i["value"] 25 with open("cookies.txt","w") as f: 26 f.write(json.dumps(cookie)) 27 input() 28 #browser.close()