python中requests庫get方法帶參數請求


起因是想爬五等分的花嫁的漫畫。這是其中的一個坑

先上代碼

data={
    'cid':567464,
    'page':1,
    'key':'',
    'language':1,
    'gtk':6,
    '_cid':567464,
    '_mid':34949,
    '_dt':'2019-05-03 13:03:08',
    '_sign':'e74c8c52618a64a454dd7f12aff3cc1c'
    }
def getFun(url,data): ret=requests.get(url,params=data) print(ret.url) return ret

有兩個坑。

一是使用get方法帶參數請求時,是params=參數字典,而不是data=。data=是post方法的參數。只怪我學藝不精,只能在坑里摸爬滾打了

二是對參數的編碼,對於上面的參數需要編碼的就是_dt,這個是時間的參數需要編碼,編碼的是空格和冒號。我之前在瀏覽器上看的url是編碼好的,我就預先編碼好數據放到data里了,然而並不需要這樣,只要把原始數據放進去,他就會自動編碼。放入預先自己編碼的數據反而會出錯。這里我還發現了一點,在url編碼時,有些編碼是把空格編碼為+,有些則是編碼為%20,這一點我還沒弄明白為什么。放入參數的數據是把空格編碼為+了,我所訪問的網址也正是需要這樣的編碼。

還有一點因為學藝不精而浪費大量時間。可以直接用ret.url來返回所請求的url,這樣就可以與瀏覽器直接訪問的結果對比。在找到這個函數之前一直是不停改參數看response來判斷是不是對,然而到最后還是沒改好,還是通過看這個ret.url才知道是編碼的問題。

我好菜。


免責聲明!

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



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