Анализ одной таблицы из нескольких таблиц, содержащихся на странице html, с использованием python - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь проанализировать таблицу на странице html по этой ссылке , и мне еще не удалось найти метод, который позволял бы указывать на нужную таблицу, поскольку страница содержит несколько других а также таблицы - как показано на прилагаемом изображении.

Я попробовал более простой метод, используя pandas .read_ html и позволил ему разобраться, но это только возвращает содержимое вершины страница (я предполагаю), упуская все остальное.

import pandas as pd
url='https://www.360optimi.com/app/sec/resourceType/benchmarkGraph?resourceSubTypeId=5c9316b28e202b46c92ca518&resourceId=envdecAluminumWindowProfAl&profileId=Saray2016&benchmarkToShow=co2_cml&entityId=5e4eae0f619e783ceb5d0732&indicatorId=lcaForLevels-CO2&stateIdOfProject='
tables = pd.read_html(url)
print(tables[0])

, который возвращает:

            0         1         2
0     English  Français   Deutsch
1     Español     Suomi     Norsk
2  Nederlands   Svenska  Italiano

Любая идея о том, как я могу использовать правильные html теги, чтобы указать на таблица интересов?

РЕДАКТИРОВАТЬ: Поскольку некоторые из вас отметили, что учетные данные для входа необходимы для веб-страницы (извинения), я загрузил html код здесь .

screenshot of web page with code inspected

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Я взял в качестве ввода html, который вы предоставили. Если вы хотите использовать этот код в URL-адресе, просто извлеките html этого URL-адреса перед использованием этого кода

from bs4 import BeautifulSoup
import pandas as pd

Your_input_html_string = str(html_code_of_your_url)

soup = BeautifulSoup(Your_input_html_string) #Provide the html code of the url in string format as input over here

#The table id which you want to extract from this html is "resourceBenchmarkTable". So let's extract the html of this table alone from the entire html
extracted_table_html = str(soup.find_all("table",id="resourceBenchmarkTable"))

#Now, convert the specific extracted html of table into pandas dataframe
table_dataframe = pd.read_html(extracted_table_html)

print(table_dataframe)

Вывод: (отображаются только первые 5 строк, чтобы сохранить короткий ответ)

enter image description here

0 голосов
/ 26 февраля 2020

Итак, я отредактировал код, предоставленный @KarthickMohanraj, для реализации первого шага, то есть чтения файла html, сохраненного локально. Окончательный код выглядит следующим образом:

from bs4 import BeautifulSoup
import pandas as pd

# opens html file saved locally
filepath = 'Aluminium_Profiles_profiles.html'
f = open(filepath, 'r', encoding='utf8', errors='ignore')

# reads html code as string
s = f.read()

# parse html string with BeautifulSoup
soup = BeautifulSoup(s) #Provide the html code of the url in string format as input over here

# The table id which you want to extract from this html is "resourceBenchmarkTable".
# So let's extract the html of this table alone from the entire html
extracted_table_html = str(soup.find_all("table",id="resourceBenchmarkTable"))

#Now, convert the specific extracted html of table into pandas dataframe
table_df = pd.read_html(extracted_table_html)[0]
...