如何使用BeautifulSoup获取这些值?
我有一个这样的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>
所以,我想要的值是 -> b - d - f - h
(每个 <tr>
的第二个和第四个 <td>
)
用BeautifulSoup模块可以做到吗?
非常感谢!
2 个回答
-2
我知道用HTQL很简单:
<tr>.<td>2,4
--
不过,HTQL只支持COM。下面是一个完整的JavaScript示例:
<html>
<body>
<script language=JavaScript>
var a= new ActiveXObject("HtqlCom.HtqlControl");
a.setUrl("C:\\test_table.html");
a.setQuery("<tr>.<td>2,4");
for (a.moveFirst(); !a.isEOF(); a.moveNext()){
document.write(a.getValueByIndex(1));
}
</script>
</body>
</html>
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]]