2013-05-25 139 views

回答

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' 
0

最简单的选择是使用python的urllib2urlparse模块。如果只需检索商品编号,则不需要像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 

这段代码看起来有点长和罗嗦,但是,这应该可以帮助你看到它实际上做。

如果您以后需要做更多高级内容,比如模拟浏览器(浏览一系列页面,接受cookies等),我可以推荐mechanize。这是一个功能非常强大的图书馆,如果您只想检索文章编号,可能会非常有用。

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 
0

您可以使用requestsurlparse库:如何获取arnumber字符串在下面的示例代码给出

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] 
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 documentationurlparse documentation