Python 阅读html的下一行
我正在使用Beautiful Soup软件包进行一些Web垃圾处理,我希望能够将行放入一个名为table的字典中,其中每个键都有多个值 这本词典是表格的代表,最终将被制成表格 我已经删除了html以提供键值,但问题是从html中读取下一行并匹配正确的键值 这些名称是字典键名称:Python 阅读html的下一行,python,html,python-3.x,beautifulsoup,Python,Html,Python 3.x,Beautifulsoup,我正在使用Beautiful Soup软件包进行一些Web垃圾处理,我希望能够将行放入一个名为table的字典中,其中每个键都有多个值 这本词典是表格的代表,最终将被制成表格 我已经删除了html以提供键值,但问题是从html中读取下一行并匹配正确的键值 这些名称是字典键名称: RowName UpdateTime State OrdersC TicketsR OrdersNC TicketsNR ReadingTime ClearingTime ClearingInProgress Volum
RowName
UpdateTime
State
OrdersC
TicketsR
OrdersNC
TicketsNR
ReadingTime
ClearingTime
ClearingInProgress
Volumes
StartTime
StopTime
这是数据的外观(打印到控制台时):
(注意:将有两个以上的结果集)
因此,字典将如下所示:
{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', ''))
将数据放入字典中,因为您已经知道元素的长度和顺序
characteristics = ['RowName','UpdateTime','State','OrdersC','TicketsR'....'StopTime']
data = []
for line in site.find_all('td'):
line = line.strip()
line.text.replace('\xa0', '')
data.extend(line)
info = dict(zip(characteristics, data))
={z[0]:在zip(,,,,)中为z列出(z[1:])
这就是我创建一个具有多个键值的字典的诀窍,它像html dom一样解析并执行xpath。find_all('td')已经将每一行作为列表中的一个元素提供给您。如果你已经知道你将拥有的元素的数量和顺序,你可以使用两个列表并使用“dict(zip(keys,values))”创建一个字典,我同意@SorenLantz的可能副本。我尝试了zip()函数,但它没有按应有的方式压缩。将有不止一组结果。@ SavaSux-Munk如果是这样的话,那么LIN。Tr..Enter可能不会返回字符串,您希望这只对一个例子有效,但是有一个以上的集合要考虑。然而,这是一个可以接受的解决方案,也许我可以将这个公式应用于有更多结果集的情况。
characteristics = ['RowName','UpdateTime','State','OrdersC','TicketsR'....'StopTime']
data = []
for line in site.find_all('td'):
line = line.strip()
line.text.replace('\xa0', '')
data.extend(line)
info = dict(zip(characteristics, data))
<<dict_name>> = {z[0]:list(z[1:]) for z in zip(<<keys>>,<<value_1>>, <<value_2>>,..., <<value_N>>)}