Beautiful Soup получает ошибку после попытки использовать регулярное выражение - PullRequest
0 голосов
/ 16 февраля 2020
threads = soup.find_all('tr',id=re.compile('^eventRowId.+'))

for thread in threads:
  t = datetime.datetime.strptime(thread['event_timestamp'],'%Y-%m-%d %H:%M:%S')
  event_times.append(datetime.datetime.strftime(t,'%d-%m'))

Пока что вышеприведенный скрипт работает нормально.

for thread in threads:
  performance = thread.find_all('td',title=re.compile('^[IBW].+'))
  print(performance['title'])

После попытки добавить эти три строки, сделав еще один "более глубокий поиск", происходит ошибка. Я сделал поиск снова, потому что я хотел извлечь вложенный «td», следуя за индексом «tr»

TypeError: индексы списка должны быть целыми или кусочками, а не str

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

1 Ответ

0 голосов
/ 16 февраля 2020

Вывод find_all() всегда является списком (даже если есть только один элемент).
Так что либо итерируйте по performance:

for td in performance:
    # do something

Или, если вы уверены, что есть только один td в каждом performance, вы можете просто извлечь performance[0].

В качестве альтернативы, если вам нужен только первый элемент (или вы уверены, что он только один), используйте find() вместо find_all().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...