我正在使用漂亮的汤从网站上抓取一些链接。
他们都在一个名为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>
答案 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"]')