Очистка данных Python - извлечение строк в таблице, где существует тег '<td>' - PullRequest
0 голосов
/ 04 марта 2019

Я работал над очисткой веб-страниц и продвинулся довольно далеко в подготовке своей таблицы к веб-странице, с которой выполняю очистку.

Проблема в том, что я не могу получить записи, которые содержат толькоданные (строки, начинающиеся с '

').Мой код выглядит следующим образом:
url = requests.get('https://en.wikipedia.org/wiki/Demographics_of_Toronto_neighbourhoods')

soup = BeautifulSoup(url.text,'lxml')
print(soup.prettify())

table_classes = {'class':'sortable'}
raw_table = soup.findAll("table", table_classes)
print(raw_table)

Помещение строки кода в гнездо вызывает ошибку 'У объекта ResultSet нет атрибута' find_all '.Вы, вероятно, рассматриваете список предметов как отдельный предмет.Вы вызывали find_all (), когда намеревались вызвать find () ':

td_tags = raw_table.find_all('<td>')
td_tags

Глядя на тип данных, я пытался использовать find (), и он все ещевызвал ту же ошибку, поэтому я попытался зациклить каждую строку со следующим кодом:

for line in raw_table:
    if line.get_text().find('<td>') > -1:
        line

Когда я запускаю этот цикл, ничего не происходит.если я помещаю его вне цикла 'if', то он просто возвращает каждую строку в таблице 'Canada_table_raw'

Как я могу получить записи с тегом '', чтобы я мог затем поместить результаты вкадр данных панд?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Почему бы не использовать select и захватить все элементы td.

data = [item.text for item in soup.select('.sortable td')]
0 голосов
/ 04 марта 2019

Вам не хватает одного куска кода для запуска парсера.

url = requests.get(
    'https://en.wikipedia.org/wiki/Demographics_of_Toronto_neighbourhoods')

soup = BeautifulSoup(url.text, 'lxml')

table_classes = {'class': 'sortable'}
raw_table = soup.findAll("table", table_classes)
#print(raw_table)
for td in raw_table:
    print(td.findAll('td'))

Как гласит код ошибки.Вы возвращаете объект ResultSet.Поэтому вам нужно перебрать объект, чтобы получить нужные вам элементы.В этом случае мы возвращаем все элементы td, которые есть в ResultsSet, со следующим выводом:

[<td><b>Toronto <a class="mw-redirect" href="/wiki/Census_metropolitan_area" title="Census metropolitan area">CMA</a> Average</b>
</td>, <td>
</td>, <td>All
</td>, <td><b>5,113,149</b>
</td>, <td><b>5903.63</b>
</td>, <td><b>866</b>
</td>, <td><b>9.0</b>
</td>, <td><b>40,704</b>
</td>, <td><b>10.6</b>
</td>, <td><b>11.4</b>
</td>, <td>
</td>, <td>
</td>, <td>
</td>, <td><a href="/wiki
........

Теперь вам просто нужно решить, какие элементы вы ищете, и отредактировать td, чтобы получить результатыты хочешь.

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