【发布时间】:2025-11-24 22:20:10
【问题描述】:
我正在使用 Beautiful Soup 包进行一些网页抓取,我希望能够将行放入名为 table 的字典中,其中每个键都有多个值。
这个字典代表一个表,最终会做成一个表
我已经抓取了 html 来为我提供键值,但问题是从 html 中读取下一行并匹配正确的键。
这些名称是字典键名:
RowName
UpdateTime
State
OrdersC
TicketsR
OrdersNC
TicketsNR
ReadingTime
ClearingTime
ClearingInProgress
Volumes
StartTime
StopTime
这是数据的外观(打印到控制台时):
(注意:这些结果集将超过两个)
NYBOT
00:10:39
Not Connected
0
7043
0
7043
07:58:30
--:--:--
0
0
02:30:00
20:00:00
MONTREAL
N/A
N/A
0
145
0
145
07:59:01
--:--:--
0
0
01:00:00
20:00:00
所以字典看起来像:
{RowName: [NYBOT, MONTREAL], UpdateTime: [00:10:39, N/A], ... , StopTime: [20:00:00,20:00:00]}
我已经尝试过了,但无济于事,因为我得到的错误是 next() 函数无法遍历字符串:
for line in site.find_all('td'):
line = line.strip()
table.update(RowName = line.text.replace('\xa0', ''))
next(line)
.
.
.
next(line)
table.update(StopTime = line.text.replace('\xa0', ''))
【问题讨论】:
-
像 html dom 一样解析并做一个 xpath
-
.find_all('td') 已经将每一行作为列表中的一个元素提供给您。如果您已经知道将拥有的元素的数量和顺序,则可以使用两个列表并使用以下命令创建字典:“dict(zip(keys, values))”
-
@SorenLantz,我同意。我已经尝试过 zip() 函数,但它没有按应有的方式压缩。会有不止一组结果。
-
@swagless_monk 如果是这种情况,那么 line.text.replace 可能不会返回您想要的字符串
标签: python html python-3.x beautifulsoup