我有这个html表:
<table>
<tr>
<td class="datax">a</td>
<td class="datax">b</td>
<td class="datax">c</td>
<td class="datax">d</td>
</tr>
<tr>
<td class="datax">e</td>
<td class="datax">f</td>
<td class="datax">g</td>
<td class="datax">h</td>
</tr>
</table>
如何获取每个<tr>
的第二个和第四个值?
如果我这样做:
bs.findAll('td', {'class':'datax'})
我明白了:
<td class="datax">a</td>
<td class="datax">b</td>
<td class="datax">c</td>
<td class="datax">d</td>
<td class="datax">e</td>
<td class="datax">f</td>
<td class="datax">g</td>
<td class="datax">h</td>
这是对的!但是我想得到这个结果:
<td class="datax">b</td>
<td class="datax">d</td>
<td class="datax">f</td>
<td class="datax">h</td>
所以,我想要的值是 - &gt; b - d - f - h
(每个<td>
的第二个和第四个<tr>
)
是否可以使用BeautifulSoup模块?
非常感谢!
答案 0 :(得分:5)
这应该做到〜
final_values=[td.string for td in bs.findAll('td', {'class':'datax'})[1::2]]
(在评论澄清之后)针对您的具体案例,它将是:
final_values=[td.b.a.string for td in bs.findAll('td', {'class':'datax'})[1::2]]
答案 1 :(得分:-2)
我知道使用HTQL,很简单:
&LT; TR&GT;。&LT; TD&GT; 2,4
-
HTQL只有COM支持的想法。以下是javascript中的完整示例:
&LT; HTML&GT;
&LT;身体GT;
&lt; script language = JavaScript&gt;
var a = new ActiveXObject(“HtqlCom.HtqlControl”);
a.setUrl( “C:\\ test_table.html”);
a.setQuery( “&LT; TR&GT;。&LT; TD&GT; 2,4”);
for(a.moveFirst();! a.isEOF(); a.moveNext()){
文件撰写(a.getValueByIndex(1));
}
&LT; /脚本&GT;
&LT; /体&GT;
&LT; / HTML&GT;