如何使用Python请求正确设置重定向某些角落案例

时间:2017-04-01 09:34:27

标签: python redirect python-requests

请考虑以下代码段:

labs <- lapply(seq(nrow(cities)), function(i) {
  paste0( '<p>', cities[i, "name"], '<p></p>', 
          cities[i, "region"], ', ', 
          cities[i, "country"],'</p><p>', 
          cities[i, "data"], '</p>' ) 
})

map2 = leaflet( cities ) %>%
  addTiles() %>%
  addCircles(lng = ~lng, lat = ~lat, fillColor = 'darkBlue', radius = 10000, 
              stroke = FALSE, fillOpacity = 0.8,
              label = lapply(labs, htmltools::HTML))

map2

代码将URL作为输入并尝试在其上运行GET请求。 我使用会话对象来管理多个请求等的Cookie。

现在我的问题是,我有几个URL(主要是Tumblr),它将在无限重定向循环中运行并在30次尝试后中断。

示例:http://ansgar-skoda.tumblr.com/post/96703389502

当我使用浏览器或

请求此页面时
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import requests
from requests import exceptions

try:
    url=sys.argv[1]
except IndexError:
    print('No URL provided.')
    sys.exit(1)

print('\n--- {}\n'.format(url))

try:
    s = requests.Session()
    r = s.get(url)
except exceptions.TooManyRedirects as t:
    print('ERROR: {}'.format(t))
    r = s.get(url, allow_redirects=False)

print('-----------------------------')
print(r.status_code)
print(r.headers)

重定向有效,我会收到正确的网页。 好像我没有正确设置它。在研究Requests docu时,我发现默认情况下allow_redirects选项为True。在这种情况下,用户代理似乎不会影响结果。

任何提示如何在这里进行? 提前致谢。

1 个答案:

答案 0 :(得分:0)

截至今天,这是请求中的错误 https://github.com/kennethreitz/requests/issues/3949