Beautifulsoup Table 抓取 table 导航
Beautifulsoup Table Scraping table navigation
我正在努力学习beautifulsoup报废HTML,有难度的挑战。
HTML 我试图报废格式不正确并且缺乏知识 beautifulsoup 我有点卡住了..
我要废弃的HTML如下
<table>
<tr>
<td><b>Value 1<b/>HiddenValue1</td>
<td>Value 2</td>
</tr>
<tr>
<td>NoValue</td>
</tr>
<tr>
<td><b>Value 3<b/>HiddenValue2</td>
<td>Value 4</td>
</tr>
</table>
所以我想要得到的结果是提取所有带有两个 td 标签的行。
这将提取第一个和最后一个 tr。
一旦我得到它们,我需要排列这些 td 和 b,然后将文本输入字典。
我想要的结果是字典列表
[
{ tdb : 'Value 1', tdHidden : 'HiddenValue1', tdSecond : 'Value 2' },
{ tdb : 'Value 3', tdHidden : 'HiddenValue2', tdSecond : 'Value 4' },
]
我正在尝试使用 findall() 函数,但不知道如何检查子 td 标签的长度,也不知道如何导航到第一个 td 和第二个 td ..
在此先感谢您的帮助!
编辑:
能否请您也帮助解决如何在 td 标签中获取 "GetThisValue" 和 "Current" 的问题?
<td align="left" valign="top">
<b>Value1</b>
<br>
<font>
<b>Current</b>
</font>
<br>
GetThisValue
</td>
以下代码应该有效 -
trs = soup.find('table').find_all('tr')
trs = [tr for tr in trs if len(tr.find_all('td')) == 2]
results = []
for tr in trs:
tds = tr.find_all('td')
d = {
'tdb': tds[0].b.text,
'tdHidden': tds[0].b.next_sibling,
'tdSecond': tds[1].text
}
results.append(d)
编辑部分的答案 2 -
# GetThisValue
soup.find('td').find_all('br')[1].next_sibling
# Current
soup.find('td').find('font').b.text
我正在努力学习beautifulsoup报废HTML,有难度的挑战。 HTML 我试图报废格式不正确并且缺乏知识 beautifulsoup 我有点卡住了..
我要废弃的HTML如下
<table>
<tr>
<td><b>Value 1<b/>HiddenValue1</td>
<td>Value 2</td>
</tr>
<tr>
<td>NoValue</td>
</tr>
<tr>
<td><b>Value 3<b/>HiddenValue2</td>
<td>Value 4</td>
</tr>
</table>
所以我想要得到的结果是提取所有带有两个 td 标签的行。 这将提取第一个和最后一个 tr。 一旦我得到它们,我需要排列这些 td 和 b,然后将文本输入字典。
我想要的结果是字典列表
[
{ tdb : 'Value 1', tdHidden : 'HiddenValue1', tdSecond : 'Value 2' },
{ tdb : 'Value 3', tdHidden : 'HiddenValue2', tdSecond : 'Value 4' },
]
我正在尝试使用 findall() 函数,但不知道如何检查子 td 标签的长度,也不知道如何导航到第一个 td 和第二个 td ..
在此先感谢您的帮助!
编辑:
能否请您也帮助解决如何在 td 标签中获取 "GetThisValue" 和 "Current" 的问题?
<td align="left" valign="top">
<b>Value1</b>
<br>
<font>
<b>Current</b>
</font>
<br>
GetThisValue
</td>
以下代码应该有效 -
trs = soup.find('table').find_all('tr')
trs = [tr for tr in trs if len(tr.find_all('td')) == 2]
results = []
for tr in trs:
tds = tr.find_all('td')
d = {
'tdb': tds[0].b.text,
'tdHidden': tds[0].b.next_sibling,
'tdSecond': tds[1].text
}
results.append(d)
编辑部分的答案 2 -
# GetThisValue
soup.find('td').find_all('br')[1].next_sibling
# Current
soup.find('td').find('font').b.text