requests從selenium獲取cookies


 1 # coding:utf-8
 2 # 用webdriver登錄並獲取cookies,並用requests發送請求,以豆瓣為例
 3 from selenium import webdriver
 4 import requests
 5 import time
 6 import json
 7 import sys
 8 reload(sys)
 9 sys.setdefaultencoding('utf-8')
10 
11 def main():
12     # 從命令行參數獲取登錄用戶名和密碼
13     user_name = sys.argv[1]
14     password = sys.argv[2]
15 
16     # 豆瓣登錄頁面URL
17     login_url = 'https://www.douban.com/accounts/login'
18 
19     # 獲取chrome的配置
20     opt = webdriver.ChromeOptions()
21     # 在運行的時候不彈出瀏覽器窗口
22     # opt.set_headless()
23 
24     # 獲取driver對象
25     driver = webdriver.Chrome(chrome_options = opt)
26     # 打開登錄頁面
27     driver.get(login_url)
28 
29     print 'opened login page...'
30     
31     # 向瀏覽器發送用戶名、密碼,並點擊登錄按鈕
32     driver.find_element_by_name('form_email').send_keys(user_name)
33     driver.find_element_by_name('form_password').send_keys(password)
34     # 多次登錄需要輸入驗證碼,這里給一個手工輸入驗證碼的時間
35     time.sleep(6)
36     driver.find_element_by_class_name('btn-submit').submit()
37     print 'submited...'
38     # 等待2秒鍾
39     time.sleep(2)
40 
41     # 創建一個requests session對象
42     s = requests.Session()
43     # 從driver中獲取cookie列表(是一個列表,列表的每個元素都是一個字典)
44     cookies = driver.get_cookies()
45     # 把cookies設置到session中
46     for cookie in cookies:
47         s.cookies.set(cookie['name'],cookie['value'])
48     # 關閉driver
49     driver.close()
50 
51     # 需要登錄才能看到的頁面URL
52     page_url = 'https://www.douban.com/accounts/'
53     # 獲取該頁面的HTML
54     resp = s.get(page_url)
55     resp.encoding = 'utf-8'
56     print 'status_code = {0}'.format(resp.status_code)
57     # 將網頁內容存入文件
58     with open('html.txt','w+') as  fout:
59         fout.write(resp.text)
60     
61     print 'end'
62 
63 if __name__ == '__main__':
64     main()

 


免責聲明!

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



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