Ast*_*ron 2 python url parsing
我想在文本文件中解析URI/L's中的参数和关键字值.还应包括没有值的参数.Python很好但是我可以使用Perl等其他工具或者也可以使用其他工具来提供建议.
示例来源:
www.domain.com/folder/page.php?date=2012-11-20
www2.domain.edu/folder/folder/page.php?l=user&x=0&id=1&page=http%3A//domain.com/page.html&unique=123456&refer=http%3A//domain2.net/results.aspx%3Fq%3Dbob+test+1.21+some%26file%3Dname&text=
www.domain.edu/some/folder/image.php?l=adm&y=5&id=2&page=http%3A//support.domain.com/downloads/index.asp&unique=12345
blog.news.org/news/calendar.php?view=month&date=2011-12-10
Run Code Online (Sandbox Code Playgroud)
示例输出:
date=2012-11-20
l=user
x=0
page=http%3A//domain.com/page.html&unique=123456
refer=http%3A//domain2.net/results.aspx%3Fq%3Dbob+test+1.21+some%26file%3Dname
test=
l=adm
y=5
id=2
page=http%3A//support.domain.com/downloads/index.asp
unique=12345
view=month
date=2011-12-10
Run Code Online (Sandbox Code Playgroud)
你不需要潜入脆弱的正则表达世界.
urlparse.parse_qsl()是工作的工具(urllib.quote()有助于逃避特殊字符):
from urllib import quote
from urlparse import parse_qsl, urlparse
with open('links.txt') as f:
for url in f:
params = parse_qsl(urlparse(url.strip()).query, keep_blank_values=True)
for key, value in params:
print "%s=%s" % (key, quote(value))
Run Code Online (Sandbox Code Playgroud)
打印:
date=2012-11-20
l=user
x=0
id=1
page=http%3A//domain.com/page.html
unique=123456
refer=http%3A//domain2.net/results.aspx%3Fq%3Dbob%20test%201.21%20some%26file%3Dname
text=
l=adm
y=5
id=2
page=http%3A//support.domain.com/downloads/index.asp
unique=12345
view=month
date=2011-12-10
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.