从html读取下一行

时间:2018-11-16 14:43:19

标签: python html python-3.x beautifulsoup

我正在使用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', ''))

2 个答案:

答案 0 :(得分:0)

将数据放入字典中,因为您已经知道元素的长度和顺序。

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))

答案 1 :(得分:0)

<<dict_name>> = {z[0]:list(z[1:]) for z in zip(<<keys>>,<<value_1>>, <<value_2>>,..., <<value_N>>)}

这就是我创建具有多个键值的字典的诀窍