python的requests在網絡請求中添加cookies參數


哎,好久沒有學習爬蟲了,現在想要重新拾起來。發現之前學習爬蟲有些粗糙,竟然連requests中添加cookies都沒有掌握,慚愧。廢話不宜多,直接上內容。

我們平時使用requests獲取網絡內容很簡單,幾行代碼搞定了,例如:

import requests
res=requests.get("https://cloud.flyme.cn/browser/index.jsp")
print res.content</span>

你沒有看錯,真的只有三行代碼。但是簡單歸簡單,問題還是不少的。
首先,這里的請求只是get方法,並且沒有解決cookies的問題。

然后就是這里並沒有解決亂碼的問題。(亂碼是python中的變態點)

 

其實,在requests的get方法中添加cookies的方法不難 可以這樣子:

res=requests.get("https://cloud.flyme.cn/browser/index.jsp",cookies=cookies)

我們所面臨的問題是,如何構造這里的cookies。
這里的cookies是一個字典格式的數據。

平時我們瀏覽網頁的時候,在審查元素中可以查看到所訪問網頁的cookies內容,大都是這樣子的:

sn_openNetBySms=%23810EBMA3TE53; sn_map=810EBMA3TE53; DSESSIONID=f1987887-3d1d-4a85-ad75-c6270e588290; JSESSIONID=; _uid=; _keyLogin=; _rmtk=; _uticket=ns_0393027c2f9f686e3499e8ebb8d1d622; _ckk=ns_397a592791064029bf1336eff1cf516e; ucuid=8a135520affa423584307f6e2c210f02; _domain=cloud.flyme.cn; _islogin=true; lang=zh_CN; JSESSIONID=1gmfzynp0ns6s1u6a92xkqgi6q
天那,這是人看的嗎?不是。這是經過加密處理后的數據。同樣,我們可以將加密后的數據傳遞到get方法的cookies參數中,服務器會自動將加密后的數據進行解密,再檢查數據的正確性。
至於,如何查看所訪問網頁的cookies內容,可以使用瀏覽器的審查功能,F12或者右擊審查(Chrome)打開。在network中查看鏈接的Headers內容。另外,也可以使用軟件抓包查看,如Fiddler web Debugger。

 

這里假設獲取到了cookies的內容,我們可以保存到本地TXT文件中(直接把cookies的內容粘貼進去即可),例如test.txt文件。

然后,

f=open(r'test.txt','r')#打開所保存的cookies內容文件
cookies={}#初始化cookies字典變量
for line in f.read().split(';'): #按照字符:進行划分讀取
#其設置為1就會把字符串拆分成2份
name,value=line.strip().split('=',1)
cookies[name]=value #為字典cookies添加內容

這時候我們將cookies添加到get方法中:

res=requests.get("https://cloud.flyme.cn/browser/index.jsp",cookies=cookies)

這時候獲取到的res.content中就是我們將cookies信息添加到get中后訪問網頁所獲取的內容。


使用requests進行網頁請求的時候經常會出現中文亂碼的問題,可以查看博客內容解決。

有關requests的使用代理問題的解決可以查看博客內容。
 
原文鏈接:https://blog.csdn.net/Winterto1990/java/article/details/51213029


免責聲明!

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



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