Petri によって提案されているように CSS セレクターを使用することは、おそらく BS を使用してそれを行うための最良の方法です。ただし、この仕事にはほぼ完璧な と をlxml.html
使用することをお勧めします。xpath
テストhtml
:
html="""
<html>
<li class="g">
<div class="vsc"></div>
<div class="alpha"></div>
<div class="beta"></div>
<h3 class="r">
<a href="http://www.correct.com"></a>
</h3>
</li>
<li class="g">
<div class="vsc"></div>
<div class="alpha"></div>
<div class="beta"></div>
<h3 class="r">
<a href="http://www.correct.com"></a>
</h3>
</li>
<li class="g">
<div class="vsc"></div>
<div class="gamma"></div>
<div class="beta"></div>
<h3 class="r">
<a href="http://www.incorrect.com"></a>
</h3>
</li>
</html>"""
そしてそれは基本的にワンライナーです:
import lxml.html as lh
doc=lh.fromstring(html)
doc.xpath('.//li[@class="g"][div/@class = "vsc"][div/@class = "alpha"][div/@class = "beta"][h3/@class = "r"]/h3/a/@href')
Out[264]:
['http://www.correct.com', 'http://www.correct.com']