【问题标题】:Scrape data from Statista site Python从 Statista 网站 Python 抓取数据
【发布时间】:2018-05-09 14:01:45
【问题描述】:

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

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

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

非常感谢!

【问题讨论】:

  • 如果您提供指向您试图从中抓取的网站的链接并且更具体地说明您感兴趣的标签,这将有所帮助。如果内容是通过 JavaScript 动态生成的,您可能会需要将 Selenium 之类的东西与 BeautifulSoup 结合使用来刮掉它。
  • 抱歉,忘记链接了!非常感谢:)

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 2014-07-06
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多