Python BeautifulSoup Извлечение данных из заголовка - PullRequest
0 голосов
/ 17 января 2019

Это продолжение от другого вопроса .Спасибо за помощь.

У меня есть код для циклического перемещения по странице и создания кадра данных.Я пытаюсь добавить третий фрагмент информации, но он содержится в заголовке, поэтому он просто возвращается пустым.Информация об уровне, содержащаяся в части кода td и h3.Он возвращает ошибку "AttributeError: у объекта 'NoneType' нет атрибута 'text'" Если я изменю level.h3.text на level.h3, он запустится, но затем у него будут полные теги в данныхкадр, а не просто номер.

import urllib
import bs4 as bs
import pandas as pd
#import csv as csv

sauce = urllib.request.urlopen('https://us.diablo3.com/en/item/helm/').read()
soup = bs.BeautifulSoup(sauce, 'lxml')

item_details =  soup.find('tbody')

names = item_details.find_all('div', class_='item-details')
types = item_details.find_all('ul', class_='item-type')
#levels = item_details.find_all('h3', class_='subheader-3')
levels = item_details.find_all('td', class_='column-level align-center')
print(levels)

mytable = []



for name, type, level in zip(names, types, levels):
    mytable.append((name.h3.a.text, type.span.text, level.h3.text))



export = pd.DataFrame(mytable, columns=('Item', 'Type','Level'))

1 Ответ

0 голосов
/ 17 января 2019

Попробуйте изменить свой код, как показано ниже:

for name, type, level in zip(names, types, levels):
    mytable.append((name.h3.a.text, type.span.text, level.h3.text if level.h3 else "No level"))

Теперь "No level" (вы можете использовать "N/A", None или что вам больше нравится) будет добавлено в качестве третьего значения в случае отсутствия уровня (без заголовка)

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