Красивый суп - итерации строк таблицы - PullRequest
0 голосов
/ 03 апреля 2020

Я использую BeautifulSoup и Python для чтения таблицы. Таблица имеет множество строк и множество элементов <td> в каждой строке. Я пытаюсь получить текст первого <td> элемента в каждой строке.

r = requests.get(url)

soup = BeautifulSoup(r.text, 'html.parser')

rows = soup.find_all('tr')
for row in rows:
    row.find('td').text

Я получаю следующую ошибку ...

AttributeError: 'NoneType' object has no attribute 'text'

Эта ошибка мне интересна потому что с помощью следующего я получаю необходимые данные

rows[1].find('td').text.strip()

Очевидно, что я получаю только одну строку данных, и мне нужно получить тысячи строк. Я уверен, что это что-то очень простое, я пропускаю, но я потратил часы, пытаясь это исправить.

1 Ответ

0 голосов
/ 03 апреля 2020

Ошибка атрибута возникает из-за того, что в некоторых строках отсутствует элемент 'td'. Попробуйте это.

for row in rows:
    if len(row.find_all('td')) >= 1:
        row.find('td').text
...