1

我正在使用 urllib2 模块读取 html 页面,下面是我的代码

代码.py

import urllib2, httplib

httplib.HTTPConnection.debuglevel = 1  
request = urllib2.Request("http://www.vodafone.in/Pages/tuesdayoffers_che.aspx")
opener = urllib2.build_opener()
f = opener.open(request)
print f.url

结果

'http://www.vodafone.in/pages/tuesdayoffers_che.aspx?cid=che'

当我在浏览器中给出上面的 url 时,它被重定向到http://www.vodafone.in/pages/home_che.aspx?cid=che,但是从上面的代码中,我得到了相同的给定 url

所以最后如何使用 urrlib2 捕获重定向的 url 并从中读取数据,因为我有许多 url 将被重定向到其他一些 url,最后我的意图是捕获重定向的 url 并从捕获的 url 中读取数据,那么如何在python中使用urllib2 and httplib

4

2 回答 2

2

正则表达式不是必需的。该站点正在通过 JavaScript 重定向,但是仍然返回 302 状态代码。您可以通过以下方式验证这一点:

url = 'http://www.vodafone.in/Pages/tuesdayoffers_che.aspx'
file_pointer = urllib2.urlopen(url)
print file_pointer.getcode()

当返回 302 状态码Location时,响应标头中有一个标头。您可以通过以下方式查看:

url = 'http://www.vodafone.in/Pages/tuesdayoffers_che.aspx'
file_pointer = urllib2.urlopen(url)
print file_pointer.info()

记录Location网址。这将是您被重定向到的页面。

于 2013-01-09T17:00:39.933 回答
-1

Yes, @Sp is right, this web page is redirected by javascript. The following is the page source.

<script>document.write("<meta http-equiv=\"refresh\" content=\"3;url=/pages/home_che.aspx\">");</script>

One approach is using a regular expression to extract the redirection location. like url\=([a-z_./]*)

>>> import re
>>> p = re.compile(r'url\=([a-z_./]*)')
>>> p.findall(r'''<script>document.write("<meta http-equiv=\"refresh\"content=\"3;url=/pages/home_che.aspx\">");</script>''')
['/pages/home_che.aspx']
于 2013-01-04T08:46:33.363 回答