Чтение следующей строки из HTML - PullRequest
0 голосов
/ 16 ноября 2018

Я использую пакет Beautiful Soup для создания веб-страниц, и я хочу иметь возможность помещать строки в словарь с именем таблица , где каждый ключ будет иметь несколько значений.

Этот словарь является представителем таблицы и в конечном итоге будет преобразован в таблицу

Я удалил 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 голосов
/ 19 ноября 2018
<<dict_name>> = {z[0]:list(z[1:]) for z in zip(<<keys>>,<<value_1>>, <<value_2>>,..., <<value_N>>)}

Это то, что помогло мне создать словарь с несколькими значениями ключа

0 голосов
/ 16 ноября 2018

Поместите данные в словарь, потому что вы уже знаете длину и порядок элементов.

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...