因此,我尝试使用BeautifulSoup打印一个表行,但我不能只使用行的ID,因为行的位置可能会根据两个不同的变量而改变。所有行的名称都类似于trRow_1
。我需要它做的是打印出一行,其中包含的文字,我正在寻找,因为它移动。你知道吗
我想不出使用if
语句打印所需行的措辞。你知道吗
这是我尝试过的,显然不起作用,但应该能让你知道我想要什么:
table = soup1.find("table", id="tblActivities")
tablerow = table.findAll("tr")
TextIwant = tablerow.find(<span>"The Text I Want"</span>)
print(TextIWant)
你知道怎么做吗?你知道吗
这是我正在使用的行元素:
<tr id="trRow_5" class="changeTrOnhover" uniqueid="" rowid="2200005" action="0" postype="0" levelclass="2200005" riskcountry="United States" issuecurrency="" riskregion="" seq="5">
<!-- End positionDetail greater than 0 -->
<td>
<span class="bold"> Cash Equivalent
</span>
</td> <!-- Asset class desc -->
<td><span></span></td> <!-- price -->
<td><span></span></td> <!-- quantity -->
<!-- START PSI19 US77980 Populate values for Investment cost -->
<td class="bold"><span>
<span>52,896.91 USD
</span></span></td>
<!-- END PSI19 US77980 Populate values for Investment cost -->
<!-- base mkt -->
<td class="bold"><span>
52,896.91 USD
</span></td>
<!-- local mkt -->
<!-- perc of class -->
<td nowrap="">
<span class="bold">
6.88
</span>
</td>
<!-- perc of total mkt -->
<!-- income yield -->
<!-- moodys -->
<td><span></span></td> <!-- action -->
<!-- positionDetail = 0 -->
</tr>
soup.select_one('table#tblActivities').select('tr:has(td:contains("Cash Equivalent")) td')
这将返回所有表行。你知道吗
for td in table.select('tr:has(td:contains("Cash Equivalent")) td'):
print(td.text.strip())
这也会返回表中的所有行。你知道吗
我不确定到底是什么问题。@安德烈·凯斯利的解决方案对我很有效。他的解决方案的简化版本也适用:
如果你改变策略,用
find()
方法替换css选择这也行。在所有这些情况下,输出为:
我相信这正是你要找的。你知道吗
您可以使用CSS选择器
:has()
和:contains()
来选择包含所选文本的td行:印刷品:
进一步阅读:
CSS Selector reference
相关问题 更多 >
编程相关推荐