Соскрести данные с сайта Statista Python - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь очистить данные за этим графиком (при наведении курсора на столбцы (например, 2018, 78.16). Вариант 1: Python & BS: я знаком с этими библиотеками, однако при проверке не могу найти данные
Вариант 2: Поиск файла JSON: Опять не повезло. Кажется, нет файла данных JSON

У кого-нибудь из вас есть идея? (извините за открытый вопрос, но мне известны только два вышеуказанных варианта.

https://www.statista.com/statistics/264911/dells-net-revenue-since-1996/

Большое спасибо!

1 Ответ

0 голосов
/ 09 мая 2018

Глядя на источник страницы, оказывается, что данные в этом графике содержатся в элементе таблицы где-то на странице. Вы можете получить нужные данные, используя Selenium и BeautifulSoup, как показано ниже:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.statista.com/statistics/264911/dells-net-revenue-since-1996/")

html = driver.page_source
soup = BeautifulSoup(html, "lxml")

chart = soup.find("tbody", {"role" : "alert"})
children = chart.find_all("tr")

data = []
for tag in children:
    data_tuple = (tag.text[:3],tag.text[3:])
    data.append(data_tuple)

print(data)

Это дает следующий вывод:

[("'96", '5.3'), ("'97", '7.8'), ("'98", '12.3'), ("'99", '18.2'), ("'00", '25.3'), ("'01", '31.9'), ("'02", '31.2'), ("'03", '35.3'), ("'04", '41.3'), ("'05", '49.1'), ("'06", '55.8'), ("'07", '57.4'), ("'08", '61.1'), ("'09", '61.1'), ("'10", '52.9'), ("'11", '61.5'), ("'12", '62.1'), ("'13", '56.9'), ("'14", '55.58'), ("'15", '54.1'), ("'16", '50.9'), ("'17", '61.6'), ("'18", '78.66')]

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

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