Python發(fā)送網(wǎng)絡請求(requests)
Python發(fā)送網(wǎng)絡請求(requests)
Python已經(jīng)是廣泛使用的腳本語言了,我們可以使用requests庫進行網(wǎng)絡請求。
在PyPI中搜索 requests
,就可以找到這個庫
1. 安裝
pip install requests
安裝完成后,在py腳本中使用庫,需要 import
進行代碼導入
import requests
2. 發(fā)送請求
2.1 發(fā)送GET請求
import requests r = requests.get('https://api.github.com/events') print(r)
如果請求成功,返回的結(jié)果為 Response 對象
GET 請求也是可以傳遞參數(shù)的,上面的代碼演示的是無參數(shù)形式,可以通過 params
參數(shù)傳遞 GET 參數(shù)。
import requests payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get('https://httpbin.org/get', params=payload)
2.2 發(fā)送POST請求
import requests r = requests.post('https://httpbin.org/post', data={'key': 'value'}) print(r)
POST請求通過 data
參數(shù)傳遞請求參數(shù)
2.3 輸出其他信息
import requests r = requests.get('https://api.github.com/events') print(r) print(r.encoding); print(r.url); print(r.status_code); print(r.cookies); print(r.headers);
encoding 表示編碼;url 表示完整請求路徑;status_code 表示 http 請求狀態(tài)碼;cookies 表示 cookies 信息;headers 表示請求頭信息。
3. 心得
Python的requests 庫可以實現(xiàn)網(wǎng)絡請求,可以以非常簡單的API發(fā)送GET、POST請求,并可以根據(jù)得到的Response對象獲取請求結(jié)果
Python多進程調(diào)用requests API發(fā)送網(wǎng)絡請求導致python程序崩潰
描述
在涉及到multiprocess的python項目中,如果在forked出的process中,調(diào)用requests API(i.e. requests.get('...'), 該進程會崩潰。
原因
根據(jù)對代碼執(zhí)行路徑的分析,以及issue 和其他網(wǎng)友的記錄, 可以判定該bug的出現(xiàn)原因為Mac的libdispatch并不是fork-safe,從而導致在fork出的進程里使用requests出錯。
解決方案
在main process里完成requests相關(guān)初始化
如果確實要在fork出的process里調(diào)用requests,那么在調(diào)用前,添加以下代碼:
os.environ['no_proxy']='*'
來跳過network proxy lookup。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python腳本實現(xiàn)音頻和視頻格式轉(zhuǎn)換
這篇文章主要為大家詳細介紹了Python如何通過腳本實現(xiàn)音頻和視頻格式轉(zhuǎn)換,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-03-03python實現(xiàn)的登錄與提交表單數(shù)據(jù)功能示例
這篇文章主要介紹了python實現(xiàn)的登錄與提交表單數(shù)據(jù)功能,結(jié)合實例形式分析了Python表單登錄相關(guān)的請求與響應操作實現(xiàn)技巧,需要的朋友可以參考下2019-09-09python爬蟲框架scrapy實現(xiàn)模擬登錄操作示例
這篇文章主要介紹了python爬蟲框架scrapy實現(xiàn)模擬登錄操作,結(jié)合實例形式分析了scrapy框架實現(xiàn)模擬登陸操作的步驟、相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下2018-08-08