将HTML表中提取的文本分配给Variable以供以后使用--Beautiful Soup/Python 3.7



我有以下代码可以完美地在HTML表源代码中动态搜索特定文本,并提取找到特定文本的行的下一行。

当前代码

r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')

# Find xxxxxxx (row-by-row) and split trailing zeros
row = soup.find_all('td', string="xxxxxxx")
for r in row:
LE = r.nextSibling
while LE.name != 'td' and LE is not None:
LE = LE.nextSibling

我遇到的主要问题(这可能非常容易,我已经关注了这么长时间(是我需要将nextSibling分配给LE变量。

LE被格式化为";001234";其中我需要去掉前导零以具有"0";1234";作为变量。

如果我将变量打印为print(LE.text[2:6]),则结果是正确的。在代码中实现为,LE = LE.nextSibling.text[2:6]不产生任何东西。

我尝试了以下陈述,但都不起作用,希望得到指导。

LE = LE.nextSibling.text[2:6]
&
LE = LE.text[2:6]

我需要在提取后将其分配给一个变量,以便稍后在脚本中使用该变量。我很感激你提前提供的帮助!

编辑-->包含的源代码:

<tr>
<td class='label' nowrap title="xxxxxxx">TEXT TO FIND</td>
<td class='attribute'>001234</td>
</tr>

您可以使用next_sibling两次,然后使用strip()删除0:

from bs4 import BeautifulSoup
html = """<tr>
<td class='label' nowrap title="xxxx">TEXT TO FIND</td>
<td class='attribute'>001234</td>
</tr>"""
soup = BeautifulSoup(html, "html.parser")
for tag in soup.select(".label"):
le = ''.join([t.strip("0") for t in tag.next_sibling.next_sibling])
print(tag.text)
print(le)

输出:

TEXT TO FIND
1234

更改:

!===

row = soup.find_all('td', string="xxxxxx")
for r in row:
LE = r.nextSibling
LE = LE.text[2:6]

最新更新