今天学习的是requests库,首先,我们来了解一下requests库。
requests是python实现的最简单易用的HTTP库,建议爬虫使用requests
import requests
url = "https://api.github.com/events"
获取某个网页
import requests
r = requests.get("https://api.github.com/events")
print(r) # <Response [200]>
print(type(r)) # <class 'requests.models.Response'>
print(r.status_code) # 200
各种请求
# 发送一个 HTTP POST 请求:
r = requests.post("http://httpbin.org/post",data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete') # 发送一个 HTTP delete 请求:
r = requests.head('http://httpbin.org/get') # 发送一个 HTTP head 请求:
r = requests.options('http://httpbin.org/get') # 发送一个 HTTP options 请求:
get 传递URL参数
?+键值对
response1 = requests.get("http://httpbin.org/get?key1=value1")
print(response1.url)
#http://httpbin.org/get?key1=value1
requests提供了params关键字参数来传递参数
parameter = {
"key1":"value1",
"key2":"value2"
}
response2 = requests.get("http://httpbin.org/get",params = parameter)
print(response2.url)
# http://httpbin.org/get?key1=value1&key2=value2
还可以将一个列表作为值传入
parameter = {
"key1":"value1",
"key2":["value21","value22"]
}
response3 = requests.get("http://httpbin.org/get",params = parameter)
print(response3.url)
# http://httpbin.org/get?key1=value1&key2=value21&key2=value22
注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。
parameter = {
"key1":"value",
"key2":None
}
response4 = requests.get("http://httpbin.org/get",params = parameter)
print(response4.url) #http://httpbin.org/get?key1=value
本次代码的实现需要用到URL
iss.gif
? ? ? ? ? ? ? ? ? ? ? ? 素材图片保存后修改对应的文件名
map.gif
![](https://img-blog.csdnimg.cn/20210904210827769.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWkggTiBG,size_20,color_FFFFFF,t_70,g_se,x_16)
import requests import turtle response_astros = requests.get('http://api.open-notify.org/astros.json') result_astros = response_astros.json() print(result_astros) response_iss = requests.get('http://api.open-notify.org/iss-now.json') result_iss = response_iss.json() print(result_iss) location = result_iss['iss_position'] lon = location['longitude'] lat = location['latitude'] print(lon,lat) screen = turtle.Screen() screen.setup(720,360) screen.setworldcoordinates(-360,-180,360,180) screen.bgpic('map.gif') screen.register_shape("iss.gif") pen = turtle.Pen() pen.shape('iss.gif') pen.up() pen.goto(float(lon),float(lat)) pen.pensize(5) pen.color('red') pen.down() flag = 1
def self_exit(x,y): ? ? global flag ? ? flag = 0 ? ? print(flag)
while flag: ? ? response_iss = requests.get('http://api.open-notify.org/iss-now.json') ? ? result_iss = response_iss.json() ? ? location = result_iss['iss_position'] ? ? lon = location['longitude'] ? ? lat = location['latitude'] ? ? print(lon,lat) ? ? pen.goto(float(lon),float(lat)) ? ? screen.onclick(self_exit) ? ? print(flag)
以下是代码实现:
![](https://img-blog.csdnimg.cn/20210904210311199.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWkggTiBG,size_20,color_FFFFFF,t_70,g_se,x_16)
这里我们爬取的的是NASA空间站的经纬信息
![](https://img-blog.csdnimg.cn/20210904210333469.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWkggTiBG,size_20,color_FFFFFF,t_70,g_se,x_16)
以下是运行结果:
![](https://img-blog.csdnimg.cn/20210904210351182.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWkggTiBG,size_20,color_FFFFFF,t_70,g_se,x_16)
|