python请求链接头

时间:2015-08-31 13:43:43

标签: python hyperlink header python-requests

我试图找到捕获响应标题下列出的链接的最佳方法,就像这个和我使用python请求模块一样。下面是在Python Requests页面上有Link Headers部分的链接: docs.python-requests.org/en/latest/user/advanced /

但是,在我的情况下,我的回复标题包含如下链接:

{'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'}

请注意&gt;在&#34;最后&#34;在请求示例中并非如此,我似乎无法弄清楚如何解决这个问题。

2 个答案:

答案 0 :(得分:14)

requests已经提供了一种访问链接标题

的方法
response.links

它返回链接标题值的字典,可以使用

轻松解析
response.links['next']['url']

获取所需的值。

答案 1 :(得分:7)

您可以手动解析标题的值。为了简化操作,您可能希望使用请求的解析函数parse_header_links作为参考。

或者你可以做一些查找/替换并使用原始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'}]

如果>,<之间可能有一两个空格,那么您需要使用正则表达式替换。