今天学习的是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
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)
以下是代码实现:
这里我们爬取的的是NASA空间站的经纬信息
以下是运行结果: