当前位置: 首页 > 知识库问答 >
问题:

通过web与python连接到API

谭毅然
2023-03-14

我试图通过API访问XML文档。当我尝试用python连接时,我得到一个403状态代码。但是,当我将链接粘贴到chrome浏览器中时,数据将按其应有的方式显示。我知道我可能需要在Python中为我的请求添加一些头,但我不知道如何这样做。

schedule = requests.get('https://api.sportradar.us/golf-t2/schedule/pga/2015/tournaments/schedule.xml?api_key=mssbj55v2wbrbr6jcet2xcdd')
print(schedules.status_code)

我可以在chrome中获取标题,但不确定需要添加哪些标题到请求中

接受:text/html、application/xhtml-xml、application/xml;q=0.9,图像/webp,/;q=0.8

用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/55.0.2883.87 Safari/537.36

我如何调整我的请求以返回200的状态?

共有1个答案

鄢英毅
2023-03-14

将所有其他浏览器标头添加到请求中。最简单的方法:打开Chrome上的链接,打开开发工具、网络选项卡,然后右键单击并“复制为cURL”。粘贴到控制台并检查是否足够:

$ curl 'https://api.sportradar.us/golf-t2/schedule/pga/2015/tournaments/schedule.xml?api_key=mssbj55v2wbrbr6jcet2xcdd' -H 'Accept-Encoding: gzip, deflate, sdch, br' -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2' -H 'Upgrade-Insecure-Requests: 1' -H 'X-Compress: null' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'If-None-Match: "c97bea3f0b2917ae53554f338c416859"' -H 'Connection: keep-alive' -H 'If-Modified-Since: Wed, 07 Oct 2015 02:41:03 GMT' --compressed ;

输出:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:s="http://feed.elasticstats.com/schema/golf/schedule-v1.0.xsd"
            exclude-result-prefixes="s" version="1.0">

<xsl:output method="html" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
....

然后将标题添加到应用中:

http://docs.python-requests.org/en/master/user/quickstart/#custom-headers

>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}

>>> r = requests.get(url, headers=headers)
 类似资料:
  • 我正在寻找将Python连接到交互式代理应用编程接口。谷歌搜索显示了ibPy的可用性(见https://pypi.python.org/pypi/ib),但是这个库似乎没有得到维护,也不支持Python 3。我还发现https://github.com/colin1alexander/IbPython3但是这个项目已经被取消了。 我知道Quantopian使用交互式代理作为其执行代理,但有一个用于

  • 问题内容: 我将Redis To Go与https://github.com/mranney/node_redis库结合使用。Redis给了我一个看起来像的URL,但是我不知道如何使用它,因为它只占用了主机和端口。 问题答案: 我相信您拥有的网址的方案是: 。 我不相信被使用。提供了两种登录方法:和。自述文件中有详细信息,但以下是相关部分供参考: redis.createClient(端口,主机,

  • 我试图连接jira的API通过python(3.6)和我一直得到错误消息: 警告:root:HTTPSConnectionPool(host='jira',port=443):url:/secure/rest/api/2/serverInfo/rest/api/2/serverInfo超过了最大重试次数(由SSLError引起(SSLError(“错误握手:错误”(('SSL例程','tls\u进

  • 用Python来编写网站,必须要能够通过python操作数据库,所谓操作数据库,就是通过python实现对数据的连接,以及对记录、字段的各种操作。上一讲提到的那种操作方式,是看官直接通过交互模式来操作数据库。 安装python-MySQLdb 要想通过python来操作数据库,还需要在已经安装了mysql的基础上安装一个称之为mysqldb的库,它是一个接口程序,python通过它对mysql数据

  • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口

  • 我在AWS上设置了一个OpenVPN EC2实例,它有如下安全组 我下载了文件,可以像(也可以在导入配置后通过网络管理器)。一切都好。 现在我想这样做,我的其他EC2实例(托管实际应用程序)只能通过VPN访问,不能直接通过SSH连接。其中一个EC2实例的安全组如下所示 这里,我允许端口22上来自OVPN服务器的私有IPv4地址的入站流量。 但是,如果我连接到VPN并尝试通过SSH连接到应用EC2实