没有在python中获得重定向的url

时间:2014-05-26 06:45:40

标签: python url redirect

点击此http://india.gov.in/topics/health-family-welfare/health中的每个链接时,每个链接都被重定向到另一个域,当我获取所有链接并尝试获取重定向的网址时,则出现以下错误,所以我采取了一个网址并将其放在浏览器上,它没有被重定向,我怎样才能获得重定向的网址。当我尝试使用下面的代码打印网址的状态代码时,它正在退回404 stsua但内容正在打印,这是否意味着我将无法获取thoose重定向的URL

try:
    print urllib2.urlopen(link).read()
except urllib2.HTTPError, e:
    print e.code
    print e.msg
    print e.headers
    print e.fp.read()

我已尝试使用此代码获取重定向的网址,但我收到了错误

import urllib2, httplib

httplib.HTTPConnection.debuglevel = 1
request = urllib2.Request("http://www.india.gov.in/redirect=http%3A%2F%2Fmohfw.nic.in&nid=MjU3NTBuZXducGk=")
opener = urllib2.build_opener()
f = opener.open(request)
print f.url

打印:

urllib2.HTTPError: HTTP Error 404: Not Found

1 个答案:

答案 0 :(得分:0)

页面重定向似乎需要将referer设置为页面,您可以从。

开始

你的电话没有设置Referer,所以它失败了。

请注意,如果您将网址设置为剪贴板并尝试在浏览器中打开它,则会在页面上显示标题""未找到请求的网页"

使用我最喜欢的requests,我可以重现这个问题,并且还可以显示标题" Referer"它的工作原理

>>> import requests
>>> url = "http://www.india.gov.in/redirect=http%3A%2F%2Fmohfw.nic.in&nid=MjU3NTBuZXducGk="
>>> req = requests.get(url)
>>> req
<Response [404]>
>>> req.reason
'Not Found'

现在尝试使用&#34; Referer&#34;标题设置为原始页面

>>> headers = {"Referer": "http://india.gov.in/topics/health-family-welfare/health"}
>>> req = requests.get(url, headers=headers)
>>> req
<Response [200]>

您可以使用任何http库获得相同的结果(或切换到requests以使您的生活更轻松。)