python - 获取最终重定向的 URL

标签 python urllib redirect python-3.4

我的代码如下:

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?任何帮助将不胜感激!

最佳答案

这对于您想要的可能有点矫枉过正,但它是使用正则表达式的替代方法。此答案使用 Selenium 网络自动化器 Python APIs跟随重定向。它还将在浏览器窗口中打开 pdf 文件。下面的代码要求您使用 Firefox,但您也可以通过将名称替换为您想要使用的名称来使用其他浏览器,即 webdriver.Chrome()、webdriver.Ie()。

安装 Selenium :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)

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

关于python - 获取最终重定向的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339236/

相关文章:

python - 如何通过使用 urllib 从请求中读取 CSRF token 在 django 应用程序之间传递 CSRF token

.htaccess - 想要将域重定向到子文件夹中的博客,直到完整站点启动

python - 使用 lambda 函数计算所有行中填充了除 NULL 之外的值的字段的数量

python - 从 URL 下载返回的 Zip 文件

python - 将日志设置为最小和最大级别,以排除错误

python - 使用 urllib2 进行 POST 的 400 错误请求

session - cakephp 重定向时丢失 session 变量

java - 从过滤器重定向到 JSP 时传递属性 : Session vs Request

python - 如何在opencv python中调整PNG图像的大小?

python - 帮助我理解为什么我对 Python 的 ctypes 模块的简单使用失败了