python 请求 link headers
python requests link headers
我正在尝试找到捕获响应 headers 下列出的 link 的最佳方法,就像这个一样,我正在使用 python 请求模块。下面是 link,它在 Python 请求页面上有 Link Headers 部分:
文档.python-requests.org/en/latest/user/advanced/
但是,就我而言,我的回复 headers 包含 link,如下所示:
{'content-length': '12276', 'via': '1.1 varnish-v4', 'links': '<http://justblahblahblah.com/link8.html>;rel="last">,<http://justblahblahblah.com/link2.html>;rel="next">', 'vary': 'Accept-Encoding, Origin'}
请注意 > 在 "last" 之后,在请求示例下情况并非如此,我似乎无法弄清楚如何解决这个问题。
您可以手动解析 header 的值。为了使事情更容易,你可能想使用请求的解析函数 parse_header_links
作为参考。
或者你可以做一些 find/replace 并使用原始 parse_header_links
In [1]: import requests
In [2]: d = {'content-length': '12276', 'via': '1.1 varnish-v4', 'links': '<http://justblahblahblah.com/link8.html>;rel="last">,<http://justblahblahblah.com/link2.html>;rel="next">', 'vary': 'Accept-Encoding, Origin'}
In [3]: requests.utils.parse_header_links(d['links'].rstrip('>').replace('>,<', ',<'))
Out[3]:
[{'rel': 'last', 'url': 'http://justblahblahblah.com/link8.html'},
{'rel': 'next', 'url': 'http://justblahblahblah.com/link2.html'}]
如果 >,
和 <
之间可能有一个或两个 space,那么您需要用正则表达式替换。
requests
已经提供了一种访问链接的方法 header
response.links
它 returns 链接字典 header 可以使用
轻松进一步解析的值
response.links['next']['url']
获取所需的值。
我正在尝试找到捕获响应 headers 下列出的 link 的最佳方法,就像这个一样,我正在使用 python 请求模块。下面是 link,它在 Python 请求页面上有 Link Headers 部分: 文档.python-requests.org/en/latest/user/advanced/
但是,就我而言,我的回复 headers 包含 link,如下所示:
{'content-length': '12276', 'via': '1.1 varnish-v4', 'links': '<http://justblahblahblah.com/link8.html>;rel="last">,<http://justblahblahblah.com/link2.html>;rel="next">', 'vary': 'Accept-Encoding, Origin'}
请注意 > 在 "last" 之后,在请求示例下情况并非如此,我似乎无法弄清楚如何解决这个问题。
您可以手动解析 header 的值。为了使事情更容易,你可能想使用请求的解析函数 parse_header_links
作为参考。
或者你可以做一些 find/replace 并使用原始 parse_header_links
In [1]: import requests
In [2]: d = {'content-length': '12276', 'via': '1.1 varnish-v4', 'links': '<http://justblahblahblah.com/link8.html>;rel="last">,<http://justblahblahblah.com/link2.html>;rel="next">', 'vary': 'Accept-Encoding, Origin'}
In [3]: requests.utils.parse_header_links(d['links'].rstrip('>').replace('>,<', ',<'))
Out[3]:
[{'rel': 'last', 'url': 'http://justblahblahblah.com/link8.html'},
{'rel': 'next', 'url': 'http://justblahblahblah.com/link2.html'}]
如果 >,
和 <
之间可能有一个或两个 space,那么您需要用正则表达式替换。
requests
已经提供了一种访问链接的方法 header
response.links
它 returns 链接字典 header 可以使用
轻松进一步解析的值response.links['next']['url']
获取所需的值。