-1

我有这个链接: http ://dx.doi.org/10.1109/mper.1991.88667

如何使用 python 获取它的标题并在其中查找arnumber=88667?这意味着:只获取http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=88667 (而不是所有站点或其他),然后找到 arnumber=88667。

提前谢谢了。

4

4 回答 4

0

最简单的选择是使用 pythonurllib2urlparse模块。如果您只需要检索文章编号,则不需要外部库或框架,如requests. 这是代码:

import urllib2
from urlparse import parse_qs, urlsplit

response = urllib2.urlopen('http://dx.doi.org/10.1109/mper.1991.88667')
url = response.url
print url       # http://ieeexplore.ieee.org:80/xpl/articleDetails.jsp?reload=true&arnumber=88667

article = parse_qs(urlsplit(url).query)['arnumber'][0]
print article   # 88667

这段代码可能看起来有点冗长和罗嗦,但是,这应该可以帮助您了解它的实际作用。

如果您以后需要做更高级的事情,比如模拟浏览器(浏览一系列页面、接受 cookie 等),我可以推荐mechanize. 这是一个非常强大的库,如果您只想检索文章编号,可能会非常强大。下面的示例代码中给出了如何获取arnumber字符串:

from mechanize import Browser
from urlparse import parse_qs, urlsplit

br = Browser()
response = br.open('http://dx.doi.org/10.1109/mper.1991.88667')

url = response.geturl()
print url       # http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=88667

article = parse_qs(urlsplit(url).query)['arnumber'][0]
print article   # 88667
于 2013-05-25T10:56:10.457 回答
0

另一种选择(没有请求或机械化):

import urllib2

url_path = "http://dx.doi.org/10.1109/mper.1991.88667"
urllib2.urlparse.parse_qs(urllib2.urlopen(url_path).url)["arnumber"][0]
>>> '88667'
于 2013-05-25T12:03:28.737 回答
0

您可以使用requestsurlparse库:

import requests
from urlparse import parse_qs, urlsplit

r = requests.get('http://dx.doi.org/10.1109/mper.1991.88667')
print parse_qs(urlsplit(r.url).query)['arnumber'][0]

虽然看起来你可以这样做:

print 'http://dx.doi.org/10.1109/mper.1991.88667'.rpartition('.')[2]
于 2013-05-25T10:57:42.557 回答
0
pip install requests

import requests
from urlparse import parse_qs, urlsplit

r = requests.get("http://dx.doi.org/10.1109/mper.1991.88667")
url = r.url
get_parameter = parse_qs(urlsplit(url).query)['arnumber'][0]

更多信息可以在requests 文档urlparse 文档中找到。

于 2013-05-25T10:58:51.537 回答