get提交數據1
get提交的數據就附在提交給服務器的url之后,以?開頭參數之間以&隔開,例如/admin/user/123456.aspx?name=123&id=123
案例:寫個腳本,在sogou自動搜索周杰倫,并將搜索頁面的數據獲取
程序如下:
import requestsquery = input("請輸入一個你喜歡的明星:")url = f'https://www.sogou.com/web?query={query}'dict = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36','Referer':'https://www.sogou.com/web?query=zhoujielun&_asf=www.sogou.com&_ast=&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=3117&sst0=1621925126921&lkt=11,1621925123805,1621925126101&sugsuv=001E74F4CA65D1685D50D56F6038D197&sugtime=1621925126921'
}response = requests.get(url,headers=dict)print(response)
print(response.text)
對于dict里面的內容,我們可以在瀏覽器手動獲得,我以Chrome瀏覽器為例:
F12或者右鍵頁面,找到檢查,點擊
找到network,如果沒有數據,刷新一下,隨便點擊左邊的內容,然后找到Request Headers,就可以找到Referer和User-Agent的值了
對于get的提交數據,使用requests.get(url,headers=dict)
,url是我們爬蟲的頁面,url也有我們提交的數據,后面增加的headers是為了反反爬蟲的。
運行結果:
get提交數據2
案例:爬取豆瓣數據排行榜的數據
地址:https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=
再第二個連接中我們找到了我們需要的數據
觀察Headers,找到url和header參數,并且可以發現是get請求
寫出程序:
import requestsurl = 'https://movie.douban.com/j/chart/top_list'
#重新封裝參數
param = {'type': '24','interval_id': '100:90','action': '','start': 0,'limit': 20,
}headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
}
resp = requests.get(url=url,params=param,headers=headers)print(resp.json())
resp.close()
這里可以在使用get方法時使用paams指定get的參數。
post提交數據
post提交數據的方法則是直接將數據放在http的body部分
response = requests.post(url=url,data=data)
data是我們需要提交的數據,字典形式
其他和post一樣