我需要按<table>
分组<tbody>
来对<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody class="listing-1">
<tr>
<td>Blue widget</td>
<td>1</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-2">
<tr>
<td>Red Widget</td>
<td>2</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-3">
<tr>
<td>Blue widget</td>
<td>3</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
</table>
进行排序
这很简单,看起来像这样:
<tbody>
我正在将每个商家信息分组到<tr>
,并希望对每个<tbody>
锁定在一起的两个<td>
的表进行排序。
如果我排序通过标题1获取顶部的蓝色小部件的<tbody>
,我需要将每个<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody class="listing-1">
<tr>
<td>Blue widget</td>
<td>1</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-3">
<tr>
<td>Blue widget</td>
<td>3</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-2">
<tr>
<td>Red Widget</td>
<td>2</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
</table>
的整个向上移动,所以它看起来像:
import bs4
html = '''<div><script bla bla></script><p>Hello all <a href ="xx"></a> <img rscr="xx"></img></p></div>'''
soup = bs4.BeautifulSoup(html, 'lxml')
soup.div.text, soup.div.find_next('a'), soup.div.find_next('img')
<我一直在使用ListJS(http://listjs.com/)对我的表进行排序,但它似乎不支持像这样分组tbody。然后我检查了TableSorter(https://mottie.github.io/tablesorter/),但这似乎也不支持它。 我对如何排序这个感到茫然,但我想我可以'是唯一一个想要做这样的事情的人。也许我问的是错误的问题?
关于如何做到这一点的任何帮助或建议,或者使用哪个插件都会非常棒。
编辑:排序的标准是每个中的第一个。每个中的第二个需要与每个中的第一个锁定在一起,而不是可排序的。因此,第二个不应该是可排序的,而应该与第一个锁定。
如果我仍然不清楚,请告诉我,我会再试一次。
答案 0 :(得分:1)
目前尚不清楚排序标准是什么。假设它是第二个单元格中的数字可以执行以下操作:
var $tBodies = $('tbody').sort(function(a, b){
var aVal = +($(a).find('tr:first td').eq(1).text().trim() || 0);
var bVal = +($(b).find('tr:first td').eq(1).text().trim() || 0);
return aVal - bVal;
});
$('table').append($tBodies);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody class="listing-1">
<tr>
<td>Blue widget</td>
<td>1</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-3">
<tr>
<td>Blue widget</td>
<td>3</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
<tbody class="listing-2">
<tr>
<td>Red Widget</td>
<td>2</td>
</tr>
<tr>
<td colspan="2">text</td>
</tr>
</tbody>
</table>