Как построить фрейм данных из Web Scraping в Python - PullRequest
0 голосов
/ 03 апреля 2020

Я могу получить данные с веб-страницы через веб-очистку в Python. Мои данные собраны в список. Но не знаю, как преобразовать этот список во фрейм данных. Есть ли какой-нибудь способ, которым я мог бы очистить и извлечь данные непосредственно в df? Вот мой код:

import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate
from pandas import DataFrame
import lxml

# GET the response from the web page using requests library
res = requests.get("https://www.worldometers.info/coronavirus/")

# PARSE and fetch content using BeutifulSoup method of bs4 library
soup = BeautifulSoup(res.content,'lxml')
table = soup.find_all('table')[0]
df = pd.read_html(str(table))

# Here dumping the fetched data to have a look
print( tabulate(df[0], headers='keys', tablefmt='psql') )
print(df[0])

Ответы [ 2 ]

1 голос
/ 03 апреля 2020
import requests
import pandas as pd

r = requests.get("https://www.worldometers.info/coronavirus/")
df = pd.read_html(r.content)[0]

print(type(df))

# <class 'pandas.core.frame.DataFrame'>

df.to_csv("data.csv", index=False)

Вывод: просмотр

enter image description here

1 голос
/ 03 апреля 2020

Ну read_html возвращает список DataFrames (согласно документации ), поэтому вы должны получить «первый» (и единственный) элемент этого списка.

Я бы просто добавил в конце (после того, как вы позвоните read_html):

df = df[0]

Тогда вы можете проверить его информацию, получив:

df.info()

# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 207 entries, 0 to 206
# Data columns (total 10 columns):
# Country,Other       207 non-null object
# TotalCases          207 non-null int64
# NewCases            59 non-null object
# TotalDeaths         144 non-null float64
# NewDeaths           31 non-null float64
# TotalRecovered      154 non-null float64
# ActiveCases         207 non-null int64
# Serious,Critical    112 non-null float64
# Tot Cases/1M pop    205 non-null float64
# Deaths/1M pop       142 non-null float64
# dtypes: float64(6), int64(2), object(2)
# memory usage: 16.3+ KB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...