Python爬蟲開發系列之三》Requests請求庫的使用

來源:互聯網
上載者:User

標籤:ace   匯入   example   用戶端   請求   操作   dict   列印   http   

Requests是一個實用、簡單、強大的Python HTTP用戶端庫,編寫爬蟲和測試伺服器響應資料時經常會用到。Requests 能夠完全滿足如今網路的需求。接下來我們從最基本的get post 請求開始 到進階特性一步一個腳印去學習。學習是個漸進的過程,只有腳踏實地不斷的去練習才能掌握這些重要的知識點。

一、發送請求 get /post

按照規例首先要匯入Requests模組》》》

import requests

r=requests.get(‘https://www.baidu.com‘)

r=requests.post(‘http://httpbin.org/post‘,data={‘key‘:‘value‘})

以上就短短這麼一行代碼就完成了get/post請求,漂亮優雅對吧,當然這隻是requests的冰山一角。

 

二、傳遞參數

在大型的系統項目中,我們的url不會是這麼簡單,往往是要傳很多查詢的參數,一般都是以索引值對的方式寫在url後面(以get請求為例子),例如https://www.baidu.com/get?key=val&name=Myname

Requests允許我們使用params關鍵字使用字典來傳參,例如:

pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘}

r=requests.get(‘https://www.baidu.com/get‘,params=pram)

print(r.url)---列印出來的是https://www.baidu.com/get?key1=val1&key2=val2

除了以上我們還可以將一個列表傳進去:

pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘,‘list‘:[value1,value2]}

r=requests.get(‘https://www.baidu.com/get‘,params=pram)

print(r.url)---列印出來的是https://www.baidu.com/get?key1=val1&key2=val2&list=value1&list=value2

 以上是關於get請求傳參的範例---post傳參也是同樣操作r=requests.post(‘https://www.baidu.com/get‘,data=pram)。

 

三、擷取響應內容

r=requests.get(‘https://www.baidu.com/‘)

r.text(文本響應內容)或r.content(二進位響應內容)或r.content.json()(json響應內容);在一般情況下擷取的圖片、mp3.....需要儲存為本地檔案的時候操作也很簡單:如下:

r=requests.get(‘https://www.baidu.com/fa.ico‘)

with open(‘fa.ico‘,‘wb‘) as fb:

        fb.write(r.content)

 

四、定製要求標頭

url = ‘https://api.github.com/some/endpoint‘

headers = {‘user-agent‘: ‘my-app/0.0.1‘}

r = requests.get(url, headers=headers)

 

五、Cookie

擷取響應資訊的Cookie

url = ‘http://example.com/some/cookie/setting/url‘

r = requests.get(url)

r.cookies[‘example_cookie_name‘]

提交Cookie到伺服器

url = ‘http://httpbin.org/cookies‘

cookies = dict(cookies_are=‘working‘)

r = requests.get(url, cookies=cookies)

 

六、逾時

r=requests.get(‘http://github.com‘, timeout=5)

timeout 僅對串連過程有效,與響應體的下載無關。 timeout 並不是整個下載響應的時間限制,而是如果伺服器在 timeout 秒內沒有應答,將會引發一個異常(更精確地說,是在 timeout 秒內沒有從基礎通訊端上接收到任何位元組的資料時)

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------完美分隔線

 一、代理

 

import requests

 

proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}

 

requests.get("http://example.org", proxies=proxies)

若你的代理需要使用HTTP Basic Auth,可以使用 http://user:[email protected]/ 文法:

proxies = {
"http": "http://user:[email protected]:3128/",
}

------------------------------------------------------------------------下一篇將詳細介紹解析庫的使用敬請期待

 

Python爬蟲開發系列之三》Requests請求庫的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.