隨着互聯網的快速發展,人們獲取信息的方式也在不斷變化。爬蟲技術(Web Crawling)成為了一種重要的信息獲取方式,它可以自動化地訪問互聯網上的數據並將這些數據保存下來,為數據分析與挖掘提供了很大的便利。而 Requests 是 Python 中最常用的 HTTP 請求庫,使用簡單方便,本文將詳細介紹如何使用 Requests 庫來進行網頁數據爬取。
一、Requests 庫的安裝
在使用 Requests 庫進行網頁數據爬取之前,我們需要先安裝它。在命令行輸入以下命令進行安裝:
pip install requests
二、Requests 庫的基礎使用
1. 發送 HTTP GET 請求
Requests 庫的核心就是 requests 模塊,在使用前我們需要先將其導入:
import requests
使用 requests.get() 方法發送一個 HTTP GET 請求:
response = requests.get('https://www.baidu.com')
print(response.text)
我們先通過 requests.get() 方法來發送一個 GET 請求,然後將響應保存在 response 變量中。最後通過 response.text 屬性來獲取返回的 HTML 頁面內容,並打印出來。
2. 發送 HTTP POST 請求
使用 requests.post() 方法發送一個 HTTP POST 請求:
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', data=payload)
print(response.json())
在上述代碼中,我們首先定義了一個 payload 字典,用於存放 POST 請求中傳遞的參數。然後使用 requests.post() 方法發送一個 POST 請求,將參數傳遞給 data 參數。最後通過 response.json() 方法來獲取服務器返回的 JSON 格式數據,並將其打印出來。
3. 設置請求頭信息
在實際的網頁爬取過程中,為了避免被網站識別出是爬蟲程序而受到限制,我們需要對請求頭信息進行設置。通過設置 User-Agent 偽裝成常見瀏覽器進行訪問可以有效降低被攔截的概率。
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0'}
response = requests.get('https://www.zhihu.com', headers=headers)
print(response.text)
在上述代碼中,我們定義了一個 headers 字典,設置了 User-Agent 字段為 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0。最後通過 requests.get() 方法以及 headers 參數進行發送。
三、Requests 庫的高級使用
1. SSL 證書驗證
在使用 Requests 庫進行網頁爬取的過程中,有些網站會使用 SSL 證書進行加密,如果不進行 SSL 證書驗證,則會遇到 SSL 錯誤。通過設置 verify 參數可以進行 SSL 證書驗證。當 verify 設置為 True 時,Requests 會驗證 SSL 證書;當 verify 設置為 False 時,不會進行驗證;當 verify 設置為 CA 證書時,Requests 會使用該證書來驗證 SSL 證書。
response = requests.get('https://some-website.com', verify=True)
2. 代理設置
在使用 Requests 庫進行網頁爬取的過程中,有些網站會對同一個 IP 地址頻繁訪問進行限制,因此需要通過設置代理來繞過這個限制。通過設置 proxies 參數可以設置代理。proxies 參數可以是一個字典類型或者一個字符串類型,具體格式可以參考 Requests 庫官方文檔。
proxies = {
'http': 'http://127.0.0.1:1080',
'https': 'http://127.0.0.1:1080',
}
response = requests.get('https://some-website.com', proxies=proxies)
3. Cookie 設置
在爬取某些需要登錄認證的網站時,我們需要手動設置 Cookie,使爬蟲能夠模擬登錄狀態。通過設置 cookies 參數可以設置 Cookie。
cookies = {
'cookie_key1': 'cookie_value1',
'cookie_key2': 'cookie_value2',
}
response = requests.get('https://some-website.com', cookies=cookies)
4. 文件上傳
除了可以獲取網頁內容外,Requests 庫還支持上傳文件並獲取服務器返回的結果。使用 requests.post() 方法進行上傳文件:
url = 'http://httpbin.org/post'
files = {'file': open('test.jpg', 'rb')}
response = requests.post(url, files=files)
print(response.json())
在上述代碼中,我們首先定義了一個 files 字典,將要上傳的文件以二進制方式打開並進行傳遞。最後通過 requests.post() 進行傳遞,將服務器返回的結果打印出來。
總結
本文介紹了 Requests 庫的基礎使用方法,包括發送 HTTP GET 請求、POST 請求、設置請求頭信息,以及介紹了 Requests 庫的高級使用方法,包括 SSL 證書驗證、代理設置、Cookie 設置、上傳文件等。通過使用 Requests 庫,我們可以方便地實現網頁數據的爬取,同時也需要遵守爬蟲道德規範,尊重網站的合法權益。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/198295.html