проблема парсинга с BeautifulSoup

Я пытаюсь очистить URL-адрес http://www.kat.ph/search/beatles/?categories%5B%5D=music с помощью BeautifulSoup

torrents = bs.findAll('tr',id = re.compile('torrent_*'))

torrents получает все торренты на этой странице, теперь каждый элемент торрентов содержит элемент tr.

Моя проблема в том, что len(torrents[0].td) равен 5, но я не могу перебирать td. Я имею в виду, что что-то вроде for x in torrents[o].td не работает.

данные, которые я получаю для торрента [0], следующие:

<tr class="odd" id="torrent_2962816">
<td class="fontSize12px torrentnameCell">
<div class="iaconbox floatedRight">
<a title="Torrent magnet link" href="magnet:?xt=urn:btih:0898a4b562c1098eb69b9b801c61a51d788df0f5&amp;dn=the+beatles+2009+greatest+hits+cdrip+ikmn+reupld&amp;tr=http%3A%2F%2Ftracker.publicbt.com%2Fannounce" onclick="_gaq.push(['_trackEvent', 'Download', 'Magnet Link', 'Music']);" class="imagnet icon16"></a>
<a title="Download torrent file" href="http://torrage.com/torrent/0898A4B562C1098EB69B9B801C61A51D788DF0F5.torrent?title=[kat.ph]the.beatles.2009.greatest.hits.cdrip.ikmn.reupld" onclick="_gaq.push(['_trackEvent', 'Download', 'Download torrent file', 'Music']);" class="idownload icon16"></a>
<a class="iPartner2 icon16" href="http://www.downloadweb.org/checking.php?acode=b146a357c57fddd450f6b5c446108672&amp;r=d&amp;qb=VGhlIEJlYXRsZXMgWzIwMDldIEdyZWF0ZXN0IEhpdHMgQ0RSaXAtIGlLTU4gUmVVUGxk" onclick="_gaq.push(['_trackEvent', 'Download', 'Download movie']);"></a>
<a class="iverif icon16" href="/the-beatles-2009-greatest-hits-cdrip-ikmn-reupld-t2962816.html" title="Verified Torrent"></a> <a rel="2962816,0" class="icomment" href="/the-beatles-2009-greatest-hits-cdrip-ikmn-reupld-t2962816.html#comments_tab">
<span class="icommentdiv"></span>145
    </a>
</div>
<div class="torrentname">
<a href="/the-beatles-2009-greatest-hits-cdrip-ikmn-reupld-t2962816.html" class="torType musicType"></a>
<a href="/the-beatles-2009-greatest-hits-cdrip-ikmn-reupld-t2962816.html">The <strong class="red">Beatles</strong> [2009] Greatest Hits CDRip- iKMN ReUPld</a>
<span>
                Posted by <a class="plain" href="/user/iKMN/">iKMN</a>
<img src="http://static.kat.ph/images/verifup.png" alt="verified" /> in 
                    <span id="cat_2962816">
<a href="/music/">Music</a>
</span></span>
</div>
</td>
<td class="nobr">168.26 <span>MB</span></td>
<td>42</td>
<td>1&nbsp;year</td>
<td class="green">1368</td>
<td class="red lasttd">94</td>
</tr>

person Bunny Rabbit    schedule 03.07.2011    source источник
comment
Вы работаете в RIAA?   -  person Matt    schedule 03.07.2011
comment
Почему вы запрашиваете len(torrents[0].td, а затем перебираете что-то совершенно другое???   -  person Andreas Jung    schedule 03.07.2011
comment
@Matt - это все еще вполне правильный вопрос программирования, в котором не говорится о каких-либо гнусных намерениях. @Bunny, не могли бы вы отредактировать этот пост, чтобы включить образец данных? Если эта ссылка не работает, то же самое относится и ко всему контексту этого вопроса.   -  person Tim Post♦    schedule 03.07.2011
comment
@ Тим, я не имел в виду, что это не так, просто шучу. На самом деле, я собираюсь начать изучать BeautifulSoup теперь, когда увидел этот вопрос :)   -  person Matt    schedule 03.07.2011
comment
Можете ли вы опубликовать пример желаемого результата?   -  person serk    schedule 09.07.2011


Ответы (1)


Я бы рекомендовал использовать lxml или вместо BeautifulSoup, среди других замечательных функций вы можете использовать xpath для захвата ссылок:

import lxml.html
doc = lxml.html.parse('http://www.kat.ph/search/beatles/?categories[]=music')
links = doc.xpath('//a[contains(@class,"idownload")]/@href')
person zeekay    schedule 03.07.2011