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

有兩個坑。post

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

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

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

我好菜。code

相關文章
相關標籤/搜索