我有这个html代码:
<div id="m0" style="visibility:visible; display:block;">
<table class="fl">
<tr bgcolor="white"><td class="v px3"></td>
<td class="ch">
<a title="Id: NetViet" class="A3">NetViet</a></td>
</tr>
<div id="m1" style="visibility:visible; display:block;">
<table class="fl">
<td class="ch">
<A class="A3" title="Id: Kino Polska Muzyka" HREF="http://www.kinopolskamuzyka.pl/" TARGET="_blank">Kino Polska Muzyka</A>
</tr>
<td class="ch">
<i>HBO3 HD</i></td>
</tr>
<td class="ch"> Faktura</td>
</tr>
我的xpath是:tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[@class="ch"]/a/text()'%div)
但是它不能给我所有渠道。我想获取<td class="ch">
中的所有文本,我想要的结果是:
[['NetViet'],['Kino Polska Muzyka','HB03','Faktura']]
有什么主意吗?预先感谢。
答案 0 :(得分:0)
除了弄乱了html结构之外,还要从xpath中删除“ tr”和“ a”节点,因为并不是每个“ td”都被这些包围。
答案 1 :(得分:0)
为什么不使用CSS选择器以该类为目标td标签元素?对于这种类型的选择,它可能比xpath更快。
from bs4 import BeautifulSoup as bs
html = '''
<div id="m0" style="visibility:visible; display:block;">
<table class="fl">
<tr bgcolor="white"><td class="v px3"></td>
<td class="ch">
<a title="Id: NetViet" class="A3">NetViet</a></td>
</tr>
<div id="m1" style="visibility:visible; display:block;">
<table class="fl">
<td class="ch">
<A class="A3" title="Id: Kino Polska Muzyka" HREF="http://www.kinopolskamuzyka.pl/" TARGET="_blank">Kino Polska Muzyka</A>
</tr>
<td class="ch">
<i>HBO3 HD</i></td>
</tr>
<td class="ch"> Faktura</td>
</tr>
'''
soup = bs(html, 'lxml')
items = [item.text.strip() for item in soup.select('td.ch')]
print(items)