溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python請求網(wǎng)絡(luò)資源

發(fā)布時間:2023-04-13 14:23:17 來源:億速云 閱讀:102 作者:iii 欄目:編程語言

這篇文章主要介紹了怎么使用Python請求網(wǎng)絡(luò)資源的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用Python請求網(wǎng)絡(luò)資源文章都會有所收獲,下面我們一起來看看吧。

使用 python 訪問網(wǎng)絡(luò)資源

要訪問網(wǎng)絡(luò)中的資源,有些朋友可能會使用 urllib.request,這個模塊也是一個 python 的標(biāo)準(zhǔn)庫。不過我們使用的是 requests,它是 urllib.request 的封裝,使用起來更方便。如果是第一次使用的話,需要安裝 requests,我們使用 pip 安裝:

pip install --user requests

安裝成功后,就可以直接使用了,使用的時候,需要在 python 文件的上方引入:

import requestsimport requests

為了有一個整體的認識,大家可以先使用瀏覽器打開這個地址,看看里面的內(nèi)容,它是一個以 json 格式展現(xiàn)的文本。

然后我們新建一個 test-resp.py 的文件,里面輸入如下代碼:

import requests
url='http://www.kemok4.com/link/62d90d223cf3e2239113a4963b191d71';
get_resp=requests.get(url);

上述代碼中第 1 行為引入 requests 模塊,第 2 行將待訪問地址存儲到 url 變量中,第 3 行使用 requests 模塊的 get 方法來訪問這個 url,并將響應(yīng)存儲在變量 get_resp 中。這個響應(yīng)是一個對象,包含請求資源的內(nèi)容和狀態(tài)。可以打印一下這個響應(yīng)的狀態(tài),使用 status_code 對象,如下代碼:

print(get_resp.status_code)

結(jié)果如下:

$ python test-resp.py
200

當(dāng)然,也可以打印出響應(yīng)的文本,即打印 get_resp.text,不過這個文本沒有格式化,不易讀,如下圖所示:

上圖我們只截取了結(jié)果的一部分,因為太長了...這個結(jié)果解析起來是比較麻煩的,不過完全不用擔(dān)心,簡單看一下其內(nèi)容我們就可以注意到,其內(nèi)容是一個json格式的,所以響  應(yīng)結(jié)果也是一個 json,而 python 對 json 的解析功能是很強大的,如下我們可以打印出這個 json 的 key 值:

print(get_resp.json().keys())

結(jié)果如下:

$ python test-resp.py
dict_keys(['total_count', 'incomplete_results', 'items'])

由上結(jié)果可以知道,我們完全可以將這個響應(yīng)結(jié)果當(dāng)作一個 json 對象來處理。比如,上述結(jié)果中的第一個 keyi 值 total_count,其表示 python 倉庫的總數(shù),我們可以將這個數(shù)值打印出來,如下所示:

response_dict=get_resp.json();
print("Total repositories:", response_dict['total_count'])

其運行結(jié)果如下:

$ python test-resp.py
Total repositories: 9128125

如果讀取的網(wǎng)絡(luò)資源,是普通的 html 格式,可以使用一個第三方庫 BeautifulSoup,可以完美解決 html 解析。關(guān)于BeautifulSoup我們在之前的文章中也介紹過,大家可以參考:使用 Python 的 Beautiful Soup 庫來分析網(wǎng)頁

添加請求頭信息

有些網(wǎng)絡(luò)資源對于請求的響應(yīng)可能做了限制,比如阻止機器人(程序)訪問,或者需要登錄(有用戶會話)才能訪問,為此,可以在請求中添加請求頭,在請求頭中模擬瀏覽器,添加用戶會話信息(token)等。如下所示:

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Authorization':'41d15146-c3f3-4c0b-b48b-b5210151a9df'
}
get_resp=requests.get(url,headers=headers,params=None)

上述代碼中,headers 對象中的 User-Agent 為模擬的瀏覽器信息,Authorization 為請求令牌。也可以按需添加其他請求頭信息,如下所示:

header={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'
}

其他

上面我們使用的例子,都是處理的 get 請求,對于 post 請求也同樣適用,使用 requests 的 post 方法,如下:

post_resp=requests.post(url,headers=headers,data=None,json=None)

使用方法與 get 請求完全相同。

關(guān)于“怎么使用Python請求網(wǎng)絡(luò)資源”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用Python請求網(wǎng)絡(luò)資源”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI