第一部:利用selenium登陸
導入selenium庫
from selenium import webdriver
明確模擬瀏覽器在電腦中存放的位置,比如我存在當前目錄
chromePath = r'.\chromedriver.exe'
用selenium的webdriver方程指明瀏覽器的路徑,同時打開一個瀏覽器。模擬瀏覽器有多種可選,比如Firefox, Safari。本次用的是谷歌的模擬瀏覽器。注意:'.Chome'是大寫字母。
wd = webdriver.Chrome(executable_path= chromePath)
讓webdriver為你填寫用戶名和密碼
wd.find_element_by_xpath('用戶名選項卡位置').send_keys('用戶名')
wd.find_element_by_xpath('密碼選項卡位置').send_keys('密碼')
讓webdrive點擊登陸,若是按鈕就選擇用click(),若是表單就選擇submit()。
wd.find_element_by_xpath('登陸按鈕所在位置').click() #若是按鈕
wd.find_element_by_xpath('登陸按鈕所在位置').submit() #若是表單
登陸完成,所有的cookies現在都存在了'wd'里面,可隨時調用。
第二部:將selenium的cookies傳入requests
導入requests庫,並構建Session()
import reqeusts
req = requests.Session()
從‘wd'里調出cookies
cookies = wd.get_cookies()
將selenium形式的cookies轉換為requests可用的cookies。
for cookie in cookies:
req.cookies.set(cookie['name'],cookie['value'])
通過上述方法可以說是萬能的登錄方法,重點注意的是一定要下載谷歌模擬器chromedriver.exe。
全部代碼:
# encoding=utf8
'''
解決中文亂碼
'''
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import requests
from selenium import webdriver
chromePath = r'.\chromedriver.exe'
wd = webdriver.Chrome(executable_path= chromePath) #構建瀏覽器
loginUrl = 'http://www.weibo.com/login.php'
wd.get(loginUrl) #進入登陸界面
wd.find_element_by_xpath('//*[@id="loginname"]').send_keys('xxxxx') #輸入用戶名
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input').send_keys('xxxxx') #輸入密碼
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click() #點擊登陸
req = requests.Session() #構建Session
cookies = wd.get_cookies() #導出cookie
for cookie in cookies:
req.cookies.set(cookie['name'],cookie['value']) #轉換cookies
print(cookies) #打印cookies
