2014-03-15 2 views
0

Im захватывает некоторые ссылки с сайта, используя красивый суп.Python beautiful soup игнорировать класс

они все в классе сНу называется Col-см-4 однако при этом классе также другой DIV с и идентификатор называется fyfy и мне нужно игнорировать все ссылки под этим Див

прямо сейчас мой сценарий выглядит так, но он также получает ссылки div id = fyfy, от которых мне нужно избавиться.

divtag = soup.find("div","col-sm-4 well")
links = divtag.findAll("a")

EDIT: HTML с сайта ниже. Мне нужно захватить только ссылки javascript и игнорировать остальные.

<div class="col-sm-4 well"> 

<div id="fyfy" style="display:none;"> 
<strong><p>Manglende plugin?</p></strong> 
<a href="http://someserver.com/misc/plugin/YouSee.msi" class="btn btn-primary">Windows</a><br> 
<a href="http://blapd.org/trw/yousee.pkg" class="btn btn-primary">OSX</a> <br> 
<a href="https://discussions.apple.com/thread/5491044" class="btn btn-primary">OSX Fix (hvis ingen lyd/billede)</a><br> 
<br> 
<br> 
<strong><p>TV-GLAD på andre enheder</p></strong> 
<a href="http://blapd.org/trw/apple.html" class="btn btn-primary">På OSX med Safari?</a> <br> 
<a href="http://blapd.org/trw/m" class="btn btn-primary">Mobilside</a><br> 
<a href="http://blapd.be/file/sxV18.zip" class="btn btn-primary">XBMC plugin</a><br> 
<br> 
</div> 
<a class="btn btn-warning" onClick="showHideFyfy();" id="fyfyknap">Vis Info</a> 

<br> 
<br> 
<strong>DR Kanaler<br></strong> 
<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 20);">DR1</a><br> 
<a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 21);">DR2</a><br> 
<a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 701);">DR3</a><br> 
<a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 31);">DR Ultra</a><br> 
<a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 38);">DR K</a><br> 
<a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 50);">DR Ramasjang</a><br> 
<br> 
</div> 
+0

Возможно, вы можете использовать селектор css, но мне нужно будет увидеть источник страницы или какой-нибудь пример html, чтобы рассказать вам больше. – roippi

ответ

0

Хорошо, я получил его для работы, вырезав .col-sm-4 и выполнив поиск javascript: changeChannel. например:

divtag = soup.select('a[href^="javascript:changeChannel"]') 
1

Возвращаясь вокруг, чтобы ответить, так как никто не делал вчера:

Вы можете использовать селектор CSS непосредственно на soup:

soup.select('.col-sm-4 > a[href]') 
Out[20]: 
[<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 20);">DR1</a>, 
<a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 21);">DR2</a>, 
<a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 701);">DR3</a>, 
<a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 31);">DR Ultra</a>, 
<a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 38);">DR K</a>, 
<a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/[email protected]/index_1700_av-b.m3u8', 50);">DR Ramasjang</a>] 

Это говорит: выбрать прямые потомки col-sm-4 класс, который является тегом a с атрибутом href. Вы можете узнать больше о selectin the docs. Я добавил в этом HREF фильтр, потому что я понял, что вы не хотите, этот тег:

<a class="btn btn-warning" onClick="showHideFyfy();" id="fyfyknap">Vis Info</a> 

Если вы сделали, просто удалить [href] фильтр.

+0

Пробовал это, но я только получил [] как вывод – user3332151

+0

Хорошо, я получил его для работы, вырезав .col-sm-4 и выполнив поиск javascript: changeChannel. как это: divtag = soup.select ('а [HREF = "JavaScript: changeChannel"]') однако теперь я не могу очистить чистый выход с использованием .split мне нужно, чтобы получить http: // часть ссылок в списке – user3332151