2015-08-31 150 views
3

我試圖找到最好的方式來捕獲響應頭下列出的鏈接,完全像這一個,我使用python requests模塊。以下是這對Python的鏈接頭部分鏈接請求頁面: 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'} 

請注意>在「最後」之後,在請求示例下並非如此,我似乎無法弄清楚如何解決這個問題。

+0

你的問題是什麼? – Alik

+0

如果我不清楚,請道歉,但是我想知道如何從響應中使用rel來響應下一個和最後一個鏈接。 – user1819085

+0

如果請求不適用於這個'link'頭,那麼你可以手動解析它:這並不難。 – Alik

回答

4

您可以手動解析標頭的值。爲了使事情變得更簡單,您可能需要使用請求的解析函數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'}] 

如果有可能是一個空間或兩個。

+0

這對我來說非常合適。 – user1819085