一、發送HTTP請求
使用requests庫,發送HTTP請求更加簡單方便。你僅需向requests.get() 方法傳入URL參數即可得到返回的response對象。
import requests
response = requests.get('https://www.baidu.com/')
print(response.text)
代碼中的requests.get()方法用於發送HTTP GET請求,返回response對象,該對象包含了伺服器響應的內容信息和狀態碼等。運行上述代碼,響應結果將會是百度首頁的HTML文檔。
當然,requests庫也提供了其他幾種發送HTTP請求的方法,比如requests.post(), requests.put(), requests.delete()等,你可以根據不同的業務需求選擇不同的發送方式。
二、傳遞URL參數
有時我們需要在請求URL中傳遞一些參數信息,比如說進行搜索。requests提供params參數來傳遞這些信息。
import requests
payload = {'q': 'python'}
response = requests.get('https://www.baidu.com/s', params=payload)
print(response.url)
在上面的代碼中,我們使用了params參數,傳遞了一個名叫「q」的參數。它會在URL中加上「?q=python」這部分參數,即搜索關鍵詞為「python」。
該代碼運行結果將會是:https://www.baidu.com/s?q=python
三、定製請求頭
有些網站可能會根據請求頭信息,返回不同的響應內容,所以我們需要在請求頭中添加一些自定義的信息。requests提供了headers參數來傳遞這些信息。
import requests
headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get('https://www.baidu.com/', headers=headers)
print(response.text)
在上面的代碼中,我們使用了headers參數,傳遞了User-Agent信息。這個信息通常用來告訴伺服器客戶端的類型,版本以及操作系統等信息。該代碼運行結果將會是百度首頁的HTML文檔。
四、響應內容
requests返回的response對象中包含了很多有用的響應信息, 可以使用text屬性獲得響應的內容。如果響應內容是二進位類型,可以使用content屬性。
import requests
response = requests.get('https://www.baidu.com/img/bd_logo1.png')
print(response.content)
在上面的代碼中,我們使用了content屬性獲取百度首頁Logo的二進位數據,並且可以使用二進位寫入模式將它們寫入到本地的文件中。
五、Cookies
網路爬蟲通常需要保存登錄會話信息, requests提供了cookies參數來管理請求中的cookies。
import requests
cookies = dict(username='kate', password='123456')
response1 = requests.post('http://example.com/login', data=cookies)
response2 = requests.get('http://example.com/myaccount', cookies=response1.cookies)
在上面的代碼中,我們使用了cookies參數,傳遞用戶名和密碼信息,發送POST請求,返回的response對象中的cookies信息包含了登錄會話信息。可以基於這些cookie信息,發送GET請求來訪問私人賬戶頁面。
六、會話對象
為了保持持續的會話狀態,requests提供了Session對象,它讓我們可以在多個請求之間共享cookies信息。
import requests
session = requests.Session()
session.get('http://example.com/login', params={'username':'kate', 'password':'123456'})
session.get('http://example.com/myaccount')
在上面的代碼中,我們使用Session對象,創建了一個會話。發送GET請求時,將用戶名和密碼信息添加到URL中作為參數。Session對象會自動管理cookies信息,這樣就可以在第二個GET請求中訪問私人賬戶頁面。
七、上傳文件
使用requests提交表單數據和上傳文件也很簡單。
import requests
files = {'avatar': open('avatar.jpg', 'rb')}
response = requests.post('http://example.com/profile', files=files)
在上面的代碼中,我們使用調用open()函數來打開文件。然後使用files參數傳遞二進位文件數據到POST請求中。
八、SSL驗證
當請求HTTPS地址時,requests默認會檢查伺服器證書是否有效。你可以使用verify參數來有選擇地關閉SSL驗證。
import requests
response = requests.get('https://github.com', verify=False)
print(response.text)
在上面的代碼中,我們使用verify參數,禁止了SSL驗證。如果伺服器證書是無效的,requests會拋出一個SecurityWarning異常。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160917.html