Python Pycurl 获取最终 URL 重定向

2024-05-15 12:54:51 发布

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

我需要访问whit pycurl网站,遵循重定向,并打印最终的url,我编写以下python代码:

c = pycurl.Curl()
c.setopt(c.URL, 'http://localhost/redirect.php')
c.setopt(c.HTTPPOST, values)
c.setopt(c.WRITEFUNCTION, buf_pagina.write)
c.setopt(c.HEADERFUNCTION, buf_header.write)
c.setopt(c.CONNECTTIMEOUT, 30)
c.setopt(c.AUTOREFERER,1)
c.setopt(c.FOLLOWLOCATION, 1)
c.setopt(c.COOKIEFILE, '')
c.setopt(c.TIMEOUT, 30)
c.setopt(c.USERAGENT, '')
c.perform()

我需要打印最后的网址,我怎么做这个?谢谢。在

解决方案是:url_effective=c.getinfo(c.effective_url)


Tags: 代码localhosthttpurl网站curl重定向redirect
1条回答
网友
1楼 · 发布于 2024-05-15 12:54:51

我在这里链接了一个PHP脚本的注释:

import pycurl
import sys
import StringIO

o = StringIO.StringIO()
h = StringIO.StringIO()

c = pycurl.Curl()
c.setopt(c.URL, 'http://stackoverflow.com/questions/21444891')
# c.setopt(c.HTTPPOST, values)
c.setopt(c.WRITEFUNCTION, o.write)
c.setopt(c.HEADERFUNCTION, h.write)
c.setopt(c.CONNECTTIMEOUT, 30)
c.setopt(c.AUTOREFERER,1)
c.setopt(c.FOLLOWLOCATION, 1)
c.setopt(c.COOKIEFILE, '')
c.setopt(c.TIMEOUT, 30)
c.setopt(c.USERAGENT, '')
c.perform()

h.seek(0)

location = ""

for l in h:
    if "Location" in l:
        location = l.split(": ")[-1]

print location

不过,正如这个例子所示,您可能并不总是有完整的URI,只有URI的路径部分(但是如果是这样,就很容易将fqdn添加回来)

相关问题 更多 >