Как веб-очистить данные пустой таблицы - PullRequest
1 голос
/ 20 февраля 2020
def proba():
    html_file = urllib.request.urlopen('https://www.biznesradar.pl/wskazniki-zadluzenia/06N')
    soup = BeautifulSoup(html_file, 'lxml')
    fields = [item['data-field'] for item in soup.find_all('tr', attrs = {'data-field': True})]
    row_data = []
    dict_of_list = {}
    for field in fields:
        for war in soup.find(attrs = {f'data-field': '{}'.format(field)}).find_all('td', class_ = 'h'):
            [row_data.append(float(i.text.replace(' ', ''))) for i in war.find_all('span', class_ = 'value')]            
    for field in enumerate(fields):       
        dict_of_list["zadl_{}".format(field[1])] = np.array_split(row_data, len(fields))[field[0]].astype(np.float)

Я хотел бы очистить данные пустой таблицы как None или np.nan, чтобы иметь равные строки в очищенных данных: enter image description here Html выглядит так: enter image description here

Когда я ищу не существующий атрибут, например, такой: x = soup.find(attrs = {f'data-field': 'LDER'}).tr, python возвращает объект NoneType, поэтому я попробовал это условие:

[row_data.append(float(i.text.replace(' ', ''))) if war.span is not None else row_data.append(np.nan) for i in war.find_all('span', class_ = 'value')] 

, но это не работает должным образом :(. Есть идеи?

1 Ответ

0 голосов
/ 21 февраля 2020
dict_of_list = {}   
def proba():
    html_file = urllib.request.urlopen('https://www.biznesradar.pl/wskazniki-zadluzenia/06N')
    soup = BeautifulSoup(html_file, 'lxml')
    fields = [item['data-field'] for item in soup.find_all('tr', attrs = {'data-field': True})]
    row_data = []
    for field in fields:
        for war in soup.find(attrs = {f'data-field': '{}'.format(field)}).find_all('td', class_ = 'h'):
            if war.span is None:
                row_data.append(np.nan)
            else:
                row_data.append(float(war.span.text.replace(' ', '')))
    for field in enumerate(fields):       
        dict_of_list["zadl_{}".format(field[1])] = np.array_split(row_data, len(fields))[field[0]].astype(np.float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...