我已经使用了具有良好结果的请求但是使用此特定网址,我得到了重定向循环中断。
s = requests.Session()
page = s.get('http://pe.usps.gov/text/pub28/28apc_002.htm')
tree = html.fromstring(page.content)
street_type = tree.xpath(r"//*[@id='ep533076']/tbody/tr[2]/td[1]/p/a")
print(street_type)
我特别想知道是否有办法为请求分配标头以避免重定向。我测试了实际的网址,看起来很有效。
由于
答案 0 :(得分:3)
重定向是服务器发送的响应。它通常是HTTP <301>
或<302>
响应,其中显示“嘿,我知道您在寻找什么,它就在这里......”然后向您发送一个新的地方。是的,这些可以链接在一起,是的,你可以在循环中结束。这就是最大重定向限制的目的。
您可以使用以下方法设置请求中允许的重定向数量:
s.max_redirects = 50 # the default is 30
但这不会解决问题。在这种特殊情况下,服务器正在寻找您正在使用的浏览器类型,并在找不到所需内容时重定向您。您可以通过在标题中添加user-agent
字段来模仿浏览器。
推荐用法:将标头设置为单个请求的通用浏览器
session.get(url, headers={'user-agent': 'My app'})
# returns:
<Response [200]>
原始发布:设置整个会话的标头,这不一定是您想要的。
s.headers = {'user-agent': 'some app'}
s.get('http://pe.usps.gov/text/pub28/28apc_002.htm')
# returns:
<Response [200]>