python(三)-python调用百度API/requests

爬虫-python调用百度API/requests

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

from urllib.request import urlopen

 

import requests

import json

 

 

url = "http://apis.baidu.com/txapi/mvtp/meinv"         #API

req = requests.get(url)         #request.get(url,param=param,headers = headers)

headers= {'apikey':'自己的apikey'}  #自己的apikey

params = {'num':'5'}                                    #请求参数(urlParam) :

= requests.get(url,params=params,headers=headers)

print(r)

 

print(r)

def SaveImage(ImageUrl,ImgName= 'default.jpg'):

    response = requests.get(ImageUrl,stream = True)

    image = response.content

 

    dst = '/Users/Alan/desktop/BaiDUImages/' #路径

    path  = dst+ImgName

    print('Save the file:',path)

    with open(path,'wb') as img:

        img.write(image)

def run():

    for line in r['newslist']:

        title = line['title']

        picUrl = line['picUrl']

        SaveImage(picUrl,ImgName=title+'.jpg')

run()

第二课:

1

2

3

4

5

6

7

8

9

10

#!/usr/bin/env python3

#antuor:Alan

import requests

import re

headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36'}

#审查元素 ,network 里的request headers,复制过来,变成字典形式url = 'http://www.cnblogs.com/wupeiqi/articles/4938499.html'

 

html = requests.get(url,headers = headers)

 

title = re.findall('href="(.*?)</a>',html.text)   #查找所有以href="开头+</a>结尾的内容for i in title:  print(i)

输入结果:

http://www.cnblogs.com/wupeiqi/">Mr.Seven
http://www.cnblogs.com/">博客园
http://www.cnblogs.com/wupeiqi/">首页
http://i.cnblogs.com/EditPosts.aspx?opt=1">新随笔
http://msg.cnblogs.com/send/%E6%AD%A6%E6%B2%9B%E9%BD%90">联系
http://www.cnblogs.com/wupeiqi/rss">订阅
http://www.cnblogs.com/wupeiqi/rss"><img src="http://www.cnblogs.com/images/xml.gif" alt="订阅" />
http://i.cnblogs.com/">管理
http://www.cnblogs.com/wupeiqi/articles/4938499.html">Python之路【目录】
http://www.cnblogs.com/wupeiqi/articles/4906230.html">Python之路【第一篇】:Python简介和入门
http://www.cnblogs.com/wupeiqi/articles/4911365.html">Python之路【第二篇】:Python基础(一)
http://www.cnblogs.com/wupeiqi/articles/4943406.html">Python之路【第三篇】:Python基础(二)
http://www.cnblogs.com/wupeiqi/articles/4963027.html">Python之路【第四篇】:模块
http://www.cnblogs.com/wupeiqi/articles/5017742.html">Python之路【第五篇】:面向对象及相关
http://www.cnblogs.com/wupeiqi/articles/5040823.html" target="_blank">Python之路【第六篇】:Socket
http://www.cnblogs.com/wupeiqi/articles/5040827.html" target="_blank">Python之路【第七篇】:线程、进程和协程
http://www.cnblogs.com/wupeiqi/articles/5095821.html">Python之路【第八篇】:堡垒机实例以及数据库操作
http://www.cnblogs.com/wupeiqi/articles/5132791.html" target="_blank">Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
http://www.cnblogs.com/wupeiqi/articles/5237672.html" target="_blank">Python之路【第十五篇】:Web框架
http://www.cnblogs.com/wupeiqi/articles/5237704.html" target="_blank">Python之路【第十六篇】:Django【基础篇】
http://www.cnblogs.com/wupeiqi/articles/5246483.html" target="_blank">Python之路【第十七篇】:Django【进阶篇】
http://www.cnblogs.com/wupeiqi/articles/5341480.html" target="_blank">Python之路【第十八篇】:Web框架们
http://www.cnblogs.com/wupeiqi/articles/4949995.html" target="_blank">计算器源码
http://www.cnblogs.com/wupeiqi/articles/4980620.html" target="_blank">装饰器
http://i.cnblogs.com/EditArticles.aspx?postid=4938499" rel="nofollow">编辑
#" οnclick="AddToWz(4938499);return false;">收藏

 

第三课:对异步加载的网页,可以用post向提交数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#!/usr/bin/env python3

#antuor:Alan

import requests

import re

 

url = 'http://www.crowdfunder.com/browse/deals'

 

 

data = {

    'entities_only':'true',  #是字符串,不是布尔值

    'page':'1'                #是字符串1,不是数字

 

}

 

html = requests.post(url,data=data)  #用post方法,不用get

title = re.findall('"card-title">(.*?)</div>',html.text)

for each in title:

    print(each)

<think>好的,用户想了解如何调用your-api-domain.com的API v1接口来获取数据。首先,我需要回忆一下调用API的基本步骤。通常,调用一个API需要以下几个步骤:了解API文档、认证授权、构造请求、发送请求、处理响应。 首先,用户需要查看该API的文档,确认接口的具体URL、支持的HTTP方法(比如GET、POST等)、必要的请求头、参数格式以及返回的数据结构。例如,文档可能会说明GET /api/v1/data需要认证令牌,并且可能需要查询参数如start_time和end_time。 接下来是认证部。很多API需要API Key或者OAuth令牌。比如,用户可能在请求头中添加Authorization: Bearer <token>,或者在URL参数里加api_key=<key>。例如,引用[1]提到使用编程语言的HTTP库发送请求,所以这里可能需要用到Pythonrequests库,在headers里加入认证信息。 然后构造请求。比如,如果API是GET方法,可能需要将参数放在查询字符串中。如果是POST,可能需要发送JSON数据。用户需要根据文档确定参数的位置和格式。例如,用户可能需要发送一个GET请求到https://your-api-domain.com/api/v1/data?start=2023-01-01&end=2023-01-31,并在headers中加入认证信息。 发送请求时,选择合适的HTTP客户端库。如Pythonrequests库,Java的OkHttp等。例如,使用requests.get(url, headers=headers, params=params)来发送请求。这部可以参考引用[1]中的内容。 处理响应时,需要检查状态码,如200表示成功,401未授权,404未找到等。然后解析返回的数据,通常是JSON格式,将其转换为程序可用的数据结构。例如,在Python中使用response.json()来获取数据。 另外,可能涉及页、错误处理、重试机制等高级功能。例如,如果响应中包含页链接,用户需要循环请求直到获取所有数据。错误处理方面,需要捕获异常,如网络问题或无效的响应格式。 可能用户的问题中还涉及到API的具体认证方式,比如是否使用OAuth 2.0,或者需要获取访问令牌。例如,如果是OAuth,可能需要先发送POST请求获取token,然后再用这个token调用API。引用[2]中提到kubelet的API调用,可能需要类似的认证步骤,比如使用kubeadm加入集群时的token,如引用[3]中的例子,但这里可能不直接相关,但说明认证的重要性。 用户可能需要参考API文档中的示例,或者查找是否有SDK可用,简化调用过程。例如,有些API提供Python库,封装了请求的细节,用户只需调用相应的方法即可。 另外,需要注意API的速率限制,避免频繁请求导致被限制。在代码中加入适当的延迟或处理速率限制的响应头。 总结步骤:查看文档→认证→构造请求→发送→处理响应→错误处理。需要确保每一步都正确,特别是认证和参数构造,否则API可能返回错误。例如,引用[4]提到使用配置文件初始化,可能类比到API调用中的配置参数,如base URL或超时设置。 最后,用户可能需要具体的代码示例,比如用Pythonrequests库如何实现。例如,给出一个简单的GET请求代码,包含认证和参数处理,并展示如何解析响应数据。同时提醒用户替换实际的API密钥或token,以及处理可能的异常情况。</think>### 如何调用 your-api-domain.com API v1 接口获取数据? 调用 API 接口的步骤如下: 1. **查看 API 文档** 确认接口的完整 URL、支持的 HTTP 方法(如 `GET`、`POST`)、请求头(如认证信息)、参数格式(如路径参数、查询参数、请求体)和响应结构。例如: - 接口地址:`https://your-api-domain.com/api/v1/data` - 请求方法:`GET` - 认证方式:API Key 或 OAuth 2.0 Token - 参数:`start_time`(查询起始时间)、`end_time`(查询结束时间) 2. **认证与授权** 根据文档要求添加认证信息。常见方式包括: - **API Key**:在请求头或查询参数中传递,例如: ```python headers = {"Authorization": "Bearer YOUR_API_KEY"} ``` - **OAuth 2.0**:先通过令牌端点获取访问令牌,再添加到请求头中[^1]。 3. **构造请求** 使用编程语言的 HTTP 客户端库构建请求。以 Python 的 `requests` 库为例: ```python import requests url = "https://your-api-domain.com/api/v1/data" params = {"start_time": "2023-01-01", "end_time": "2023-12-31"} headers = {"Authorization": "Bearer YOUR_TOKEN"} response = requests.get(url, params=params, headers=headers) ``` 4. **处理响应** - **检查状态码**:如 `200` 表示成功,`401` 表示未授权,`404` 表示接口不存在[^2]。 - **解析数据**:若响应为 JSON 格式,可通过 `response.json()` 转换为字典或对象。 - **错误处理**:捕获网络异常或业务逻辑错误(如速率限制)。 5. **高级功能(可选)** - **页**:若响应包含页参数(如 `page_token`),循环请求直到获取全部数据。 - **重试机制**:对临时性错误(如 `5xx` 状态码)添加自动重试逻辑。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值