Очистите URL с помощью BeautifulSoup - PullRequest
0 голосов
/ 10 ноября 2011

Мой сценарий

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 ]

4 голосов
/ 10 ноября 2011

Но это полностью базовый Python.Вы получаете список, и вы хотите вывести его по одному URL на строку.

for url in urls:
    print url
2 голосов
/ 10 ноября 2011

Это в значительной степени возвращает это.То, что вы видите, - это просто список строк URL, закодированных как строки юникода (поэтому перед ними стоит u).

Если вы просто хотите красиво напечатать эти URLВ Python есть модуль для красивой печати, который можно использовать следующим образом:

from pprint import pprint

pprint(my_list_of_urls)

Однако он не будет печатать их построчно.Для этого вам нужно использовать:

for url in my_list_of_urls:
    print url

Редактировать:

Я только что попробовал симпатичный модуль печати в списке строк Unicode, и я не думаю, что на самом деле это так.что-нибудь другое с 'U' перед строками.Я оставляю это, потому что он может творить чудеса с представлением длинных структур данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...