gpt4 book ai didi

python - 根据美丽汤中 child 的文本值查找标签列表

转载 作者:行者123 更新时间:2023-11-28 22:52:43 25 4
gpt4 key购买 nike

我有一个关于使用其子属性之一的条件选择标签列表(或单个标签)的问题。具体来说,给定 HTML 代码:

<tbody>
<tr class="" data-row="0">
<tr class="" data-row="1">
<tr class="" data-row="2">
<td align="right" csk="13">13</td>
<td align="left" csk="Jones,Andre"><a href="/players/andre-jones-2.html">Andre Jones</a>
</td>
<tr class="" data-row="3">
<td align="right" csk="7">7</td>
<td align="left" csk="Jones,DeAndre"><a href="/players/deandre-jones-1.html">DeAndre Jones</a>
</td>
<tr class="" data-row="4">
<tr class="" data-row="5">

我有一个来自外部循环的 unicode 变量,我试图查看表中的每一行以提取 <tr>带有 Player==Table.tr.a.text 的标签并在 Table 中识别重复的玩家名称.因此,例如,如果有多个玩家使用 Player=Andre Jones MyRow对象返回所有 <tr>包含该玩家姓名的标签,而如果只有一行带有 Player=Andre Jones , 然后 MyRow只包含单个元素 <tr> anchor 文本属性等于 Andre Jones .我一直在尝试类似的事情

Table = soup.find('tbody')
MyRow = Table.find_all(lambda X: X.name=='tr' and Player == X.text)

但这会返回 []对于 MyRow .如果我使用

MyRow = Table.find_all(lambda X: X.name=='tr' and Player in X.text)

这将选择任何 <tr>Player作为 X.text 的子串.在上面的示例代码中,它同时提取了 <tr>。带有 Table.tr.td.a.text=='Andre Jones' 的标签和 Table.tr.td.a.text=='DeAndre Jones' .任何帮助将不胜感激。

最佳答案

您可以使用 XPath 和 lxml 轻松完成此操作:

import lxml.html

root = lxml.html.fromstring('''...''')
td = root.xpath('//tr[.//a[text() = "FooName"]]')

BeautifulSoup“等效”类似于:

rows = soup.find('tbody').find_all('tr')
td = next(row for row in rows if row.find('a', text='FooName'))

或者如果你倒过来想:

td = soup.find('a', text='FooName').find_parent('tr')

关于python - 根据美丽汤中 child 的文本值查找标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com