从Statista站点Python抓取数据

时间:2018-05-09 14:01:46

标签: json python-3.x web-scraping

我正在尝试抓取此图表背后的数据(当悬停在条形图上时(例如2018,78.16)。 选项1: Python& BS:我熟悉这些库,但是在检查时我找不到数据 选项2:查找JSON文件:再次,没有运气。似乎没有JSON数据文件

你们中有谁有想法吗? (抱歉这个未解决的问题,但以上两个选项是我唯一知道的。

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

查看页面源代码,结果表明该图表中的数据包含在页面某处的表格元素中。您可以使用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之类的内容,您必须在其中点击每个元素以便弹出窗口可以生成工具提示,然后在显示时抓取信息。