成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用 Python 請求網絡資源

開發 后端
最近在寫一個定時訪問網絡資源的程序,里面涉及到使用 python 訪問網絡,所以我們今天就對這一個點做一個簡短的總結。

很長時間以來我們都在分享 Linux 系統相關的知識,所以可能會有朋友誤以為我們只分享 Linux 操作相關的東西,其實不是啊,我們在平時開發過程中遇到的一些問題,感覺可以總結的,都有可能拿來分享。

最近在寫一個定時訪問網絡資源的程序,里面涉及到使用 python 訪問網絡,所以我們今天就對這一個點做一個簡短的總結。

使用 python 訪問網絡資源

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

pip install --user requests

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

import requestsimport requests

為了方便演示,我們使用 requests 模塊訪問一下 github 上星最高的 python 項目,地址為:

??https://api.github.com/search/repositories?q=language:python&sort=stars??

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

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

import requests
url='??https://api.github.com/search/repositories?q=language:python&sort=stars??';
get_resp=requests.get(url);

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

print(get_resp.status_code)

結果如下:

$ python ??test-resp.py??
200

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

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

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

結果如下:

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

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

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

其運行結果如下:

$ python ??test-resp.py??
Total repositories: 9128125

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

添加請求頭信息

有些網絡資源對于請求的響應可能做了限制,比如阻止機器人(程序)訪問,或者需要登錄(有用戶會話)才能訪問,為此,可以在請求中添加請求頭,在請求頭中模擬瀏覽器,添加用戶會話信息(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 請求完全相同。

以上就是我們本次分享全部內容,歡迎討論。

責任編輯:龐桂玉 來源: TIAP
相關推薦

2010-05-06 11:13:10

虛擬化

2012-05-31 13:43:09

IPv6網絡IPv6IPv6網絡資源

2009-09-23 10:30:14

Android開發者

2011-07-05 09:50:21

2009-07-27 13:32:37

2025-04-03 00:00:00

DeepSeek專利

2012-03-30 13:51:38

2022-05-15 15:14:04

爬蟲Requests反爬

2018-05-03 19:14:23

iOS開發框架API

2012-02-03 09:55:06

Delphi

2018-03-16 14:24:24

人工智能機器學習神經網絡

2022-12-19 07:28:53

Kubernetes資源請求限制

2022-11-22 08:41:22

curlDELETELinux

2018-11-06 13:13:21

DDOS網絡攻擊IP

2021-06-29 15:52:03

PythonPOST

2016-07-26 09:06:44

網絡技術網絡資源管理

2016-07-29 17:15:39

網絡技術創新

2020-08-25 07:16:20

Python資源文件文件

2013-03-26 12:46:23

Android開發So

2022-04-11 18:21:13

云網絡網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: h视频在线免费 | 国产美女视频黄a视频免费 国产精品福利视频 | 欧美精品一区二区三区四区 在线 | 成人精品一区二区三区中文字幕 | 北条麻妃一区二区三区在线观看 | 久久亚洲欧美日韩精品专区 | 成人免费淫片aa视频免费 | 国产午夜精品一区二区三区嫩草 | 99视频免费在线观看 | 免费在线视频一区二区 | 天天玩天天干天天操 | 久久久久一区 | 欧美一区二区三区电影 | 亚洲九色 | 久久成人免费 | 欧美无乱码久久久免费午夜一区 | 久久久久九九九九 | aaaa一级毛片 | 国产精品婷婷 | 精品色| 手机av在线 | 久久久久久91香蕉国产 | 国产一区亚洲 | 国产一区二区激情视频 | 久久精品免费一区二区 | 国产精品中文字幕在线播放 | 欧美大片在线观看 | 在线色网 | 成人影院网站ww555久久精品 | 黄色免费av| a级黄色毛片免费播放视频 国产精品视频在线观看 | 成人免费福利视频 | 久久机热 | 亚洲免费人成在线视频观看 | 亚洲精选久久 | 久久久久久成人 | 欧美日一区二区 | 欧美美女爱爱视频 | 色免费看| 在线观看亚洲欧美 | 国产伦精品一区二区三区四区视频 |