如何使用urllib2获取当前url和查询字符串?

4 投票
2 回答
7555 浏览
提问于 2025-04-16 12:22

我需要读取当前的网页地址,包括问号后面的查询字符串。

也就是说,我想获取浏览器地址栏里现在显示的URL。

2 个回答

0

假设你在使用urllib2的时候,已经有了网址。要从这个网址中提取查询字符串,你可以使用Python 2中的一个很方便的函数叫做 urlparse(在Python 3中,这个函数被移到了另一个模块里)。

>>> from urlparse import urlparse, parse_qs
>>> url = 'www.example.com/file.php?id=2'
>>> urlparse("www.example.com/file.php?id=2").query
'id=2'
>>> 
4

一个 urllib2.Request 对象提供了一个 geturl() 方法,这个方法可以返回请求的完整网址。然后你可以把这个网址传给 urlparse.urlparse(),这个函数会把网址拆分成六个部分。接着,你可以通过 query 属性来访问网址中的查询部分。

举个例子:

>>> from urllib2 import urlopen
>>> from urlparse import urlparse
>>> req = urlopen('http://capitalfm.com/?foo=bar')
>>> req.geturl()
'http://www.capitalfm.com/?foo=bar'
>>> url = urlparse(req.geturl())
>>> url.query
'foo=bar'

撰写回答