使用BeautifulSoup清理URL

时间:2011-11-10 19:06:44

标签: python beautifulsoup

我的剧本

import BeautifulSoup as bs
from BeautifulSoup import BeautifulSoup 
url_list = sys.argv[1]
urls = [tag['href'] for tag in 
    BeautifulSoup(open(url_list)).findAll('a')]

返回

[u'http://www.youtube.com/watch?v=Gg81zi0pheg', u'http://www.youtube.com/watch?v=pP9VjGmmhfo', u'http://www.youtube.com/watch?v=yTA1u6D1fyE', u'http://www.youtube.com/watch?v=4v8HvQf4fgE', u'http://www.youtube.com/watch?v=e9zG20wQQ1U', u'http://www.youtube.com/watch?v=khL4s2bvn-8', u'http://www.youtube.com/watch?v=XTndQ7bYV0A', u'http://www.youtube.com/watch?v=xTT2MqgWRRc', u'http://www.youtube.com/watch?v=J2ZYQngwSUw', u'http://www.youtube.com/watch?v=9RZwvg7unrU', u'http://www.youtube.com/watch?v=vz3qOYWwm10', u'http://www.youtube.com/watch?v=yarv52QX_Yw', u'http://www.youtube.com/watch?v=LRREY1H3GCI']

我希望它能归还:

http://www.youtube.com/watch?v=Gg81zi0pheg
http://www.youtube.com/watch?v=pP9VjGmmhfo
http://www.youtube.com/watch?v=yTA1u6D1fyE
http://www.youtube.com/watch?v=4v8HvQf4fgE
http://www.youtube.com/watch?v=e9zG20wQQ1U
http://www.youtube.com/watch?v=khL4s2bvn-8
http://www.youtube.com/watch?v=XTndQ7bYV0A
http://www.youtube.com/watch?v=xTT2MqgWRRc
http://www.youtube.com/watch?v=J2ZYQngwSUw
http://www.youtube.com/watch?v=9RZwvg7unrU
http://www.youtube.com/watch?v=vz3qOYWwm10
http://www.youtube.com/watch?v=yarv52QX_Yw
http://www.youtube.com/watch?v=LRREY1H3GCI

我很难把头包裹在BeautifulSoup周围。什么都有帮助。谢谢你的时间。

2 个答案:

答案 0 :(得分:4)

但这是完全基本的Python。您正在获取一个列表,并且您希望每行输出一个URL。

for url in urls:
    print url

答案 1 :(得分:2)

它几乎正在回归。你看到的只是一个url字符串列表,编码为unicode strings(这就是为什么它们前面有一个u。)

如果你只是想要很好地打印这些网址,那么Python有一个非常适合打印的模块,可以按如下方式使用:

from pprint import pprint

pprint(my_list_of_urls)

但是,这不会逐行打印。要做到这一点,你需要使用:

for url in my_list_of_urls:
    print url

编辑:

我刚刚在unicode字符串列表中尝试了漂亮的打印模块,我认为它实际上与字符串前面的'u'没有任何不同。我要离开它,因为它可以代表长数据结构创造奇迹。