Показывать данные из дочерних и родительских тегов div в виде таблицы фреймов данных с помощью BeautifulSoup - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в анализе, я написал код, который показывает данные не так, как должно быть.

from selenium import webdriver
wd = webdriver.Chrome(executable_path = 'C:/Users/mirko/bin/chromedriver')
wd.get('http://reports.weforum.org/global-competitiveness-report-2018/country-economy-profiles/#economy=KAZ')

soup_page = BeautifulSoup(wd.page_source, 'html.parser')

table = soup_page.find_all('li', {"class":'economy-series-table-row economy-series-table-row--index economy-series-table-row economy-series-table-row--responsive economy-series-table-row economy-series-table-row--gci-4 economy-series-table-row economy-series-table-row--depth-0'})

index_list = []
col2 = soup_page.find_all('div', {"class":'economy-series-table-row__entity economy-series-table-row__entity--link'})
for elem1 in col2:
    index = elem1.findNext('span', attrs= {'class':'economy-series-table-row__entity-name'}).get_text().strip()
    index_list.append(index)

value_list = []
for value in soup_page.findAll('b', attrs= {'class':'economy-series-table-row__value economy-series-table-row__value--fade'}):
    value = value.get_text()
    value_list.append(value.strip())

score_list = []
for score in soup_page.findAll('b', attrs= {'class':'economy-series-table-row__score'}):
    score = score.get_text()
    score_list.append(float(score.strip()))

rank_list = []
for rank in soup_page.findAll('b', attrs= {'class':'economy-series-table-row__rank'}):
    rank = rank.get_text()
    rank_list.append(int(rank.strip()))

best_perfomer = []
for perfomer in soup_page.findAll('div', attrs= {'class':'economy-series-table-row__td economy-series-table-row__td--best'}):
    perfomer = perfomer.get_text()
    best_perfomer.append(perfomer.strip())

head_col = []
col1 = soup_page.find_all('div', {"class":'economy-series-table-row__entity economy-series-table-row__entity--link'})

for elem in col1:
    head = elem.find("span").get_text().strip()
    head_col.append(head)

import pandas as pd

indicators = pd.DataFrame({
     "col1": head_col,
    "index": index_list,
    "value": value_list,
    "score": score_list,
    "rank": rank_list,
        "best perfomer": best_perfomer,

 })
print(indicators.info())
indicators

Это синтаксический анализ http://reports.weforum.org/global-competitiveness-report-2018/country-economy-profiles/#economy = KAZ site.

У меня есть эти результаты моя версия

Но результат должен выглядеть следующим образом result

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