Python美丽的汤忽略了类

时间:2014-03-15 16:18:54

标签: python

我正在使用漂亮的汤从网站上抓取一些链接。

他们都在一个名为col-sm-4的div类中 但是在这个类下面还有另一个div和id称为fyfy,我需要忽略这个div下的所有链接

现在我的脚本看起来像这样,但它也获得了我需要摆脱的div id = fyfy链接。

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

编辑: 来自以下网站的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/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a><br>
<a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a><br>
<a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a><br>
<a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a><br>
<a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a><br>
<a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a><br>
<br>
</div>

2 个答案:

答案 0 :(得分:1)

因为昨天没人做过回来回答:

您可以直接在soup上使用css选择器:

soup.select('.col-sm-4 > a[href]')
Out[20]: 
[<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a>,
 <a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a>,
 <a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a>,
 <a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a>,
 <a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a>,
 <a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a>]

这表示:选择col-sm-4类的直接后代,这些后代是a标记,具有href属性。您可以阅读有关select in the docs的更多信息。我添加了那个href过滤器,因为我认为你不想要这个标签:

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

如果您这样做,只需删除[href]过滤器。

答案 1 :(得分:0)

好的,我通过删除.col-sm-4并搜索javascript:changeChannel来实现它。像这样:

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