将 HTML table 中提取的文本分配给变量供以后使用 -- Beautiful Soup / Python 3.7
Assign Extracted text from HTML table to Variable for later use -- Beautiful Soup / Python 3.7
我有下面的代码,可以完美地在 HTML table 源代码中动态搜索特定文本,并提取找到特定文本的行的 nextSibling。
当前代码
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”,我需要去除前导零以将“1234”作为变量。
如果我将变量打印为 print(LE.text[2:6])
,结果是正确的。实现到代码中,
LE = LE.nextSibling.text[2:6]
不产生任何东西。
我已经尝试了以下语句,但是 none 行得通,希望得到指导。
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]
我有下面的代码,可以完美地在 HTML table 源代码中动态搜索特定文本,并提取找到特定文本的行的 nextSibling。
当前代码
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”,我需要去除前导零以将“1234”作为变量。
如果我将变量打印为 print(LE.text[2:6])
,结果是正确的。实现到代码中,
LE = LE.nextSibling.text[2:6]
不产生任何东西。
我已经尝试了以下语句,但是 none 行得通,希望得到指导。
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]