Стимулирующая таблица - PullRequest
       72

Стимулирующая таблица

0 голосов
/ 22 января 2020

Я пытаюсь очистить таблицу Incentive Step Tracker с URL-адреса ниже. Я заинтересован только в небольшом жилом хранилище.

Я подошел где-то близко, но не совсем за столом. Помогите, пожалуйста, завершить sh мой код и преобразовать результат в формат CSV, чтобы я мог сохранить его в локальной папке.

Вот мой код:

# import libraries
from bs4 import BeautifulSoup
import urllib.request
import csv

urlpage='https://www.selfgenca.com/home/program_metrics/'

page = urllib.request.urlopen(urlpage)
# parse the html using beautiful soup and store in variable 'soup'
soup = BeautifulSoup(page, 'html.parser')
print(soup)

table = soup.find('table',{'class': 'table'}).find_all('tbody',{'data-t': 'Small Residential Storage'})[0]
results = table.find_all('tr')
print(results)

Вот таблица, которую я хочу чистить:

Идеальный выходной стол

Ответы [ 2 ]

0 голосов
/ 24 января 2020
row1 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': 'head-row'})[1]
line1=[]
for h in row1.find_all('td'):
   line1.append(h.text)
row2 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': ''})[3]
line2=[]
for h in row2.find_all('td'):
   line2.append(h.text)
df1=pd.DataFrame([line1,line2], columns=headers)
df2=df.append(df1,ignore_index=True)
df2
0 голосов
/ 22 января 2020

Я думаю, что это можно сделать с помощью pandas, с этими изменениями в вашем коде выше:

import pandas as pd

#get the headers
tab = soup.find('table',{'class': 'table'}).find_all('tr',{'class': 'head-row'})
headers=[]
for h in tab[0].find_all('td'):
   headers.append(h.text)

и создать фрейм данных

final = []
for res in results:
    tmp = []
    for r in res:
        if not 'NavigableString' in str(type(r)):
            tmp.append(r.text.strip())
    final.append(tmp)

df = pd.DataFrame(final,columns=headers)
df

Вывод выглядит как таблица, которую вы хочу.

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