我是否可以从包含<tr id="tr_xxxxxx">
的所有标签中过滤掉id="time_xxxxxx"
和id="odds_3_xxxxxx"
中的所有无数据,而仅显示id="time_xxxxxx"
和id="odds_3_xxxxxx"
中的所有有数据?
有一个<tr>
标签,其中包含id="tr_xxxxxxx
<tr> </tr>
标签中的包含两组数据
<td id="odds_3_xxxxxxx"></td>
<div id="time_xxxxx"> </div>
,但我只想得到标签,它已经完成了一组数据,只是第一组id="odds_3_xxxxxx"
是ok的。
在这个html表中,数据模式如下:
第一组(数据完整集)
第二组(无时间数据)
第三组(只有时间数据)
<tr style="display: none;" id="tr_976952" index="0" align="center" bgcolor="#F7F3F7" height="15">
<div id="time_1039509">
42
<img src="images/in.gif" border="0">
</div>
<td width="90" id="odds_3_1039509" title="">
<a class="sb" href="javascript:" onclick="ChangeDetail3(1039509,'3')">0.94</a>
<img src="images/t3.gif">
<br>
<a class="pk" href="javascript:" onclick="ChangeDetail3(1039509,'3')">2.5/3</a>
<br>
0.86
</td>
<td width="90" id="odds_4_1234567" title="">
<a class="sb" href="javascript:" onclick="ChangeDetail3(1039509,'3')">0.12</a>
<img src="images/t3.gif">
<br>
<a class="pk" href="javascript:" onclick="ChangeDetail3(1039509,'3')">3</a>
<br>
0.41
</td>
</tr>
<tr style="display: none;" id="tr_654654" index="0" align="center" bgcolor="#F7F3F7" height="15">
<div id="time_654654">
<img src="images/in.gif" border="0">
</div>
<td width="90" id="odds_3_654654" title="">
<a class="sb" href="javascript:" onclick="ChangeDetail3(654654,'3')">0.88</a>
<img src="images/t3.gif">
<br>
<a class="pk" href="javascript:" onclick="ChangeDetail3(654654,'3')">1.5</a>
<br>
0.86
</td>
<td width="90" id="odds_4_1234567" title="">
<a class="sb" href="javascript:" onclick="ChangeDetail3(654654,'3')">0.77</a>
<img src="images/t3.gif">
<br>
<a class="pk" href="javascript:" onclick="ChangeDetail3(654654,'3')">2</a>
<br>
0.66
</td>
</tr>
<tr style="display: none;" id="tr_534589" index="0" align="center" bgcolor="#F7F3F7" height="15">
<div id="time_534589">
50
<img src="images/in.gif" border="0">
</div>
<td width="90" id="odds_3_534589" title=""></td>
<td width="90" id="odds_4_534589" title="">
<a class="sb" href="javascript:" onclick="ChangeDetail3(534589,'3')">0.99</a>
<img src="images/t3.gif">
<br>
<a class="pk" href="javascript:" onclick="ChangeDetail3(534589,'3')">6</a>
<br>
0.74
</td>
</tr>
代码:(因为我的代码将显示所有数据,但我只需要完整的数据集,如果数据不在完整集中,我不想显示)
rows = table.findAll("tr", {"id" : re.compile('tr_*d')})
cols = soup.find_all(["div", "td"], id=re.compile('^(odds_3|time)_d+$'))
data = [t.strip()
for tag in cols
for t in tag.find_all(text=True) if t.strip()]
print '; '.join(data)
输出:42; 0.94 ; 2.5/3 ; 0.86
0.88 ; 1.5 ; 0.86
50
预期输出:42; 0.94 ; 2.5/3 ; 0.86
为什么不像这样过滤打印出来的内容呢:
if len(data) == 4:
print '; '.join(data)