获取最终重定向的URL

2024-10-05 10:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下:

url_orig ='http://www.has-sante.fr/portail/jcms/c_676945/fr/prialt-ct-5245'
u = urllib.request.urlopen(url_orig)
print (u.geturl())

基本上当URL被重定向两次时。输出应为:

http://www.has-sante.fr/portail/upload/docs/application/pdf/2008-07/ct-5245_prialt_.pdf

但我得到的输出是第一个重定向:

http://www.has-sante.fr/portail/plugins/ModuleXitiKLEE/types/FileDocument/doXiti.jsp?id=c_676945

如何获得所需的最终URL?任何帮助都将不胜感激!


Tags: 代码httpurlpdfwwwfr重定向has
2条回答

这可能有点过分,但它是使用正则表达式的另一种选择。这个答案使用Selenium web自动机Python APIs跟踪重定向。它还将在浏览器窗口中打开pdf文件。下面的代码要求您使用的是Firefox,但您也可以使用其他浏览器,方法是将名称替换为您要使用的浏览器,即webdriver.Chrome()、webdriver.i e()。

安装硒:pip install selenium

代码:

from selenium import webdriver

driver = webdriver.Firefox()
link = 'http://www.has-sante.fr/portail/jcms/c_676945/fr/prialt-ct-5245'

driver.get(link)
print(driver.current_url)

也可以在后台运行浏览器,这样就不会弹出窗口。此解决方案的附加好处是,如果它们改变了re-direction的工作方式,则无需更新代码中的正则表达式。

这是可行的,他们使用javascript或html标记重定向,因此寻找“Location”头是行不通的。这不是一个优雅的解决方案,但它是有效的。

import urllib.request
url ='http://www.has-sante.fr/portail/jcms/c_676945/fr/prialt-ct-5245'

req = str(urllib.request.urlopen(url).read())
url = req.split("URL=\\'")[1].split("\\'\">'")[0].strip("../")

print("http://www.has-sante.fr/portail/" + url)

相关问题 更多 >

    热门问题