2012-04-12 56 views
1

OK后,这里的基本上就是我想要做的事:获取URL的一部分重定向

的URL http://anidb.net/perl-bin/animedb.pl?show=animelist&adb.search="Cowboy Bebop"&do.search=search重定向到http://anidb.net/perl-bin/animedb.pl?show=anime&aid=23

比方说,我想写下ID(23,在这个例子)在一个XML文件中。

+1

更多信息 - 你真的想要一个Python解决方案吗?为什么你的脚本在Perl中?蟒蛇在哪里起作用? – Kasapo 2012-04-12 17:41:00

回答

1

urlopen的结果有方法geturl它提供重定向信息。然后你可以用正则表达式来解析它。

import urllib2 
import re 

url = 'http://anidb.net/perl-bin/animedb.pl?show=animelist&adb.search=%22Cowboy%20Bebop%22&do.search=search' 
headers = {"User-agent": "Mozilla/5.0"} 
request = urllib2.Request(url, None, headers) 
result = urllib2.urlopen(request) 
r = re.search("aid=(\d+)", result.geturl()) 
print r.group(1) 
+0

可能应该使用类似'urlparse'的库而不是'regex' – jamylak 2012-04-12 17:51:51

+0

可能应该。我从来没有用过它。随时提高我的答案。 – Fenikso 2012-04-12 17:57:31

0

这样做:

var uri = window.location.href 
var params = uri.split("?")[1].split("&"); 

args = {}; 
for(var i=0; i<params.length; i++) { 
    p = params[i].split("="); 
    args[p[0]] = p[1]; 
} 
alert(args['aid']); 

[编辑:锯蟒蛇标签]

因此,在蟒蛇,如果你有一个网址,你可以非常类似于把它分解:

uri = "http://anidb.net/perl-bin/animedb.pl?show=anime&aid=23" 
params = uri.split('?')[1].split('&') 

args={} 
for kv in params: 
    p = kv.split('=') 
    args[p[0]] = p[1] 

但是,我再也不知道python在你的问题中起了什么作用,因为它看起来被碰到的脚本是perl。

+0

这不应该是'python'吗? – jamylak 2012-04-12 17:37:59

+2

我没有downvote,但我相信downvote是因为这是一个标签为Python的问题的Javascript。 OP可能正在寻找服务器端解决方案。 – bernie 2012-04-12 17:38:40

+1

我的不好...那么URL在哪里发挥与python的发挥?我只看到perl脚本 – Kasapo 2012-04-12 17:40:30

0

与实际的编码问题无关。但是您可能需要使用AniDB search data而不是查询他们的网站。