Python-创建一个网络请求的方法

101 阅读1分钟

Python为我们提供了urllib 标准库包来创建网络请求。

使用创建一个请求。

from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'

response = request.urlopen(url)
content = response.read()

print(content)

你也可以使用with 语句来简化

from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'

with request.urlopen(url) as response:
   content = response.read()

print(content)

响应是一串字节,你会注意到,因为响应被包裹在一个b'' 字符串中。

b'{"message":{"affenpinscher":[],"african":[],"airedale":[],"akita":[],"appenzeller":[],"australian":["shepherd"],"basenji":[],"beagle":[],"bluetick":[],"borzoi":[],"bouvier":[],"boxer":[],"brabancon":[],"briard":[],"buhund":["norwegian"],"bulldog":["boston","english","french"]},"status":"success"}'

使用:将其解码为UTF-8编码的字符串。content.decode('utf-8')

这就从我的网站flavicopes.com获得了HTML内容。

from urllib import request

url = 'https://flaviocopes.com'

with request.urlopen(url) as response:
   content = response.read().decode('utf-8')

print(content)

你可以使用json 标准库模块,将响应解析为JSON。

from urllib import request
import json

url = 'https://dog.ceo/api/breeds/list/all'

with request.urlopen(url) as response:
   content = response.read()

data = json.loads(content)
print(data['status'])

如果你需要指定查询参数,使用urllib.parse() 方法来建立查询字符串。

from urllib import request, parse
url = 'https://api.thecatapi.com/v1/images/search'

parms = {
    'limit' : 5,
    'page' : 1,
    'order' : 'Desc'
}

querystring = parse.urlencode(parms)

with request.urlopen(url + '?' + querystring) as response:
   content = response.read().decode('utf-8')

print(content)

这就是内置的urllib 包。

为了方便起见,你可能想使用requests 包,它不是Python标准库的一部分,但相当流行。