天道酬勤,学无止境

从交互式图表中抓取数据(Web scraping data from an interactive chart)

问题

是否可以在此网页中获取交互式图表背后的数据(抱歉,网站需要登录)?

当我用鼠标将鼠标悬停在图表上时,数据会显示出来,但我如何获取这些数据?

以下是该网站的 HTML 源代码的摘录:

<svg height="460" version="1.1" width="1037" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; left: -0.5px;">
<desc>Created with Raphaël 2.1.0</desc>
<defs>

<path style="" fill="none" stroke="#f1f1f1" d="M20,130L1017,130M20,159.66666666666666L1017,159.66666666666666M20,189.33333333333331L1017,189.33333333333331M20,219L1017,219M20,248.66666666666666L1017,248.66666666666666M20,278.3333333333333L1017,278.3333333333333M20,308L1017,308">
<path style="" fill="none" stroke="#f1f1f1" d="M295.0344827586207,130L295.0344827586207,337.66666666666663M295.0344827586207,365L295.0344827586207,415M535.6896551724138,130L535.6896551724138,337.66666666666663M535.6896551724138,365L535.6896551724138,415M776.3448275862069,130L776.3448275862069,337.66666666666663M776.3448275862069,365L776.3448275862069,415M1017,130L1017,337.66666666666663M1017,365L1017,415">
<path style="" fill="none" stroke="#cccccc" d="M17,337.66666666666663L1018,337.66666666666663">
<path style="" fill="none" stroke="#cccccc" d="M17,365L1018,365">
<rect x="20" y="130" width="997" height="207.66666666666666" r="0" rx="0" ry="0" fill="#ff0000" stroke="none" style="opacity: 0;" opacity="0">
<path style="" fill="none" stroke="#6e87d7" d="M20,281.030303030303L54.37931034482759,316.6902356902357L88.75862068965517,318.78787878787875L123.13793103448276,318.78787878787875L157.51724137931035,318.78787878787875L191.89655172413794,312.4949494949495L226.27586206896552,285.2255892255892L260.65517241379314,312.4949494949495L295.0344827586207,314.59259259259255L329.41379310344826,316.6902356902357L363.7931034482759,297.8114478114478L398.1724137931035,318.78787878787875L432.55172413793105,335.56902356902356L466.9310344827586,293.61616161616155L501.3103448275862,276.8350168350168L535.6896551724138,272.6397306397306L570.0689655172414,274.7373737373737L604.448275862069,272.6397306397306L638.8275862068965,216.00336700336698L673.2068965517242,216.00336700336698L707.5862068965517,239.07744107744105L741.9655172413793,281.030303030303L776.344827586207,144.68350168350165L810.7241379310345,245.37037037037032L845.1034482758621,239.07744107744105L879.4827586206897,247.46801346801345L913.8620689655172,245.37037037037032L948.2413793103449,245.37037037037032L982.6206896551724,207.61279461279457L1017,163.56228956228955" stroke-width="2">
<path style="" fill="none" stroke="#f1f1f1" d="M20,390L1017,390M20,415L1017,415">
<path style="opacity: 

还有更多这些path元素,我没有在这里粘贴。

回答1

您将不得不解析该信息(并根据您的标签进行猜测,您将需要在 python 中执行此操作)。 但是,快速浏览 Raphael 文档后,我相当确定您可以通过另一种更快的方式获取数据:数据必须作为 javascript 数组存在于某处。 尝试先寻找那个。

最终,根据这个 javascript 数据,您找到的 SVG 被生成。 如果您查看 SVG 路径元素描述,您将看到需要如何解释这些ML定义,然后您应该能够将这些行解析为您喜欢的(python)数据集。

但是,我想再次声明,我们很难在没有图片的情况下找到您要查找的内容(是直方图还是折线图?)。 用L绘制的线条可能就是你所需要的。

例如,如果您采用在 python 会话中列出的第一条路径,您可以这样做:

svg_string = "M20,130L1017,130M20,159.66666666666666L1017,159.66666666666666M20,189.33333333333331L1017,189.33333333333331M20,219L1017,219M20,248.66666666666666L1017,248.66666666666666M20,278.3333333333333L1017,278.3333333333333M20,308L1017,308"
import re
data = [map(float, xy.split(',')) for xy in re.split('[ML]', svg_string)[1:]]

备注,这只是正常工作,因为M卵巢和L INE命令轮流在此字符串。 但看起来所有其他路径都以类似的方式生成(这让我更加强烈地认为数据集只是在您尚未查看的 javascript 文件中的某个位置)。

最后,要获得此源代码,您应该考虑使用 urllib2 进行编程检索。

回答2

对于这种情况,一个不错的选择是将 selenium 与一些抓取工具(如 Python 中的 Scrapy)结合使用。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用Python从网站上抓取图形数据(Scraping graph data from a website using Python)
    问题 是否可以从网站捕获图形数据? 例如,这里的网站有很多地块。 是否可以使用Python代码捕获这些数据? 回答1 查看您提供的链接的页面源,可通过该链接直接以JSON格式获得图表数据。 http://www.fbatoolkit.com/chart_data/1414978499.87 因此,您的抓取工具可能想要执行以下操作: import requests import re r = requests.get('http://www.fbatoolkit.com') data_link = b'http://www.fbatoolkit.com/' + re.search(b'chart_data/[^"]*', r.content).group() data_string = requests.get(data_link).content.decode('utf-8') chart_data = eval(data_string.replace('window.chart_data =', '').replace(';\n','')) (编辑以解释我查找链接的过程)当我遇到这样的问题时,我要做的第一件事是查看页面源(在Windows版Chrome中为ctrl-u)。 我到处搜索与绘制图表有关的内容,直到找到以下javascript function make
  • 我可以从highcharts.js抓取原始数据吗?(Can I scrape the raw data from highcharts.js?)
    问题 我想使用highcharts.js从显示图表的页面上抓取数据,因此我完成了对所有页面的解析,以进入下一页。 但是,最后一页,即显示数据集的页面,使用highcharts.js来显示图形,似乎几乎无法访问原始数据。 我将Python 3.5与BeautifulSoup结合使用。 仍然可以解析它吗? 如果可以,我该如何刮擦? 回答1 数据在脚本标签中。 您可以使用bs4和正则表达式获取脚本标签。 您也可以使用正则表达式提取数据,但我喜欢使用/ js2xml将js函数解析为xml树: from bs4 import BeautifulSoup import requests import re import js2xml soup = BeautifulSoup(requests.get("http://www.worldweatheronline.com/brussels-weather-averages/be.aspx").content, "html.parser") script = soup.find("script", text=re.compile("Highcharts.Chart")).text # script = soup.find("script", text=re.compile("precipchartcontainer")).text if you
  • 快速响应的交互式图表/图形:SVG,画布,其他?(Fast and responsive interactive charts/graphs: SVG, Canvas, other?)
    问题 我正在尝试选择用于更新项目的正确技术,该项目基本上在可缩放,可平移的图形中呈现成千上万的点。 当前使用Protovis的实施效果不佳。 在这里查看: http://www.planethunters.org/classify 完全缩小时大约有2000点。 尝试使用底部的手柄放大一点,然后拖动以平移。 您会发现它非常不稳定,除非您有一台非常快的计算机,否则您在一个内核上的CPU使用率可能会高达100%。 对焦点区域的每次更改都需要重绘到原图,这相当慢,而且绘制的点数更多时更糟。 我想对界面进行一些更新,并更改底层的可视化技术,以更好地响应动画和交互。 从下面的文章来看,似乎是在另一个基于SVG的库还是一个基于画布的库之间进行选择: http://www.sitepoint.com/how-to-choose-between-canvas-and-svg/ d3.js源自Protovis,它是基于SVG的,应该可以更好地渲染动画。 但是,我对性能有多好以及性能上限有多大怀疑。 因此,我还在考虑使用基于画布的库(例如KineticJS)进行更全面的大修。 但是,在我开始深入研究一种或另一种方法之前,我想听听有人用如此大量的数据完成了类似的Web应用程序,并征求了他们的意见。 最重要的是性能,其次是增加其他交互功能和对动画进行编程的重点。 一次最多可能不会超过2000个点
  • python代码库-吐血整理!绝不能错过的24个Python库
    Python有以下三个特点: 易用性和灵活性 全行业高接受度:Python无疑是业界最流行的数据科学语言 用于数据科学的Python库的数量优势 事实上,由于Python库种类很多,要跟上其发展速度非常困难。因此,本文介绍了24种涵盖端到端数据科学生命周期的Python库。 文中提及了用于数据清理、数据操作、可视化、构建模型甚至模型部署(以及其他用途)的库。这是一个相当全面的列表,有助于你使用Python开启数据科学之旅。 用于数据收集的Python库 你是否曾遇到过这样的情况:缺少解决问题的数据?这是数据科学中一个永恒的问题。这也是为什么学习提取和收集数据对数据科学家来说是一项非常重要的技能。数据提取和收集开辟了前所未有的道路。 以下是三个用于提取和收集数据的Python库: 1. Beautiful Soup 传送门:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 收集数据的最佳方式之一就是抓取网站(当然是以合乎道德和法律的手段!)徒手做这件事需要耗费大量的劳动和时间。Beautiful Soup无疑是一大救星。 Beautiful Soup是一个HTML和XML解析器,可为被解析的页面创建解析树,从而用于从web页面中提取数据。从网页中提取数据的过程称为网页抓取。 使用以下代码可安装BeautifulSoup:
  • 24个顶级Python库
    Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 事实上,由于Python库种类很多,要跟上其发展速度非常困难。因此,本文介绍了24种涵盖端到端数据科学生命周期的Python库。 文中提及了用于数据清理、数据操作、可视化、构建模型甚至模型部署(以及其他用途)的库。这是一个相当全面的列表,有助于你使用Python开启数据科学之旅。 用于不同数据科学任务的Python库 用于数据收集的Python库 · Beautiful Soup · Scrapy · Selenium 用于数据清理和数据操作的Python库 · Pandas · PyOD · NumPy · Spacy 用于数据可视化的Python库 · Matplotlib · Seaborn · Bokeh 用于建模的Python库 · Scikit-learn · TensorFlow · PyTorch 用于模型解释的Python库 · Lime · H2O 用于语音处理的Python库 · Librosa · Madmom · pyAudioAnalysis 用于图像处理的Python库 · OpenCV-Python · Scikit-image · Pillow 作为数据库的Python库 · Psycopg
  • 搭建Prometheus监控报警系统
    目录 什么是Prometheus? Prometheus的特点 架构图 基本原理 服务过程 三大套件 本飞猪教程内容简介 安装准备 一.安装Prometheus Server 二.安装客户端提供metrics接口 1.通过golang客户端提供metrics 2.通过node exporter提供metrics 三.安装pushgateway 四.安装Grafana展示 五.安装AlterManager 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。 Prometheus目前在开源社区相当活跃。 Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。 Prometheus的特点 多维度数据模型。灵活的查询语言。不依赖分布式存储,单个服务器节点是自主的。通过基于HTTP的pull方式采集时序数据
  • 避免从网站数据库“刮取数据”的主要技术(Top techniques to avoid 'data scraping' from a website database)
    问题 I am setting up a site using PHP and MySQL that is essentially just a web front-end to an existing database. Understandably my client is very keen to prevent anyone from being able to make a copy of the data in the database yet at the same time wants everything publicly available and even a "view all" link to display every record in the db. Whilst I have put everything in place to prevent attacks such as SQL injection attacks, there is nothing to prevent anyone from viewing all the records as html and running some sort of script to parse this data back into another database. Even if I was
  • R:交互式绘图(工具提示):rCharts酒窝绘图:格式化轴(R: interactive plots (tooltips): rCharts dimple plot: formatting axis)
    问题 我有一些用ggplot2创建的图表,我想将它们嵌入到Web应用程序中:我想用工具提示来增强图表。 我研究了几种选择。 我目前正在尝试使用rCharts库,以及其他的酒窝图。 这是原始的ggplot: 这是将其转置为酒窝图的首次尝试: 我有几个问题: 用百分比格式化y轴后,数据将被更改。 格式化X轴以正确显示日期后,打印了太多标签。 我不依赖于酒窝图表,因此,如果有其他选项可以更轻松地调整轴格式,我将很高兴知道。 (莫里斯图表看起来也不错,但是调整它们看起来会更加困难,不是吗?) 目标:固定轴并添加给出日期(格式为1984)和值(格式为40%)的工具提示。 如果我能解决1和2,我会很高兴。 但是,如果有人提出建议,这是另一个不太重要的问题: 将鼠标悬停在行上时,可以在工具提示中添加行标签(“前10%”)吗? 从以下网址下载数据后:https://gist.github.com/ptoche/872a77b5363356ff5399,将创建一个数据框: df <- read.csv("ps-income-shares.csv") 基本酒窝图是用以下方法创建的: library("rCharts") p <- dPlot( value ~ Year, groups = c("Fractile"), data = transform(df, Year = as.character
  • 您如何筛选刮屏? [关闭](How do you Screen Scrape? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 5年前关闭。 改善这个问题 当没有可用的Web服务API时,您唯一的选择可能是“屏幕抓取”,但是您如何在c#中做到这一点? 您如何看待呢? 回答1 马特和保罗的答案是正确的。 通过解析网站的HTML进行“屏幕抓取”通常是个坏主意,因为: 解析HTML可能很困难,尤其是如果格式不正确。 如果您要抓取非常非常简单的页面,则正则表达式可能会起作用。 否则,请使用诸如HTML Agility Pack之类的解析框架。 网站是一个移动的目标。 每当源网站更改其标记结构时,您都需要更新代码。 屏幕抓取在Javascript中效果不佳。 如果目标网站正在使用任何类型的动态脚本来操纵网页,则将很难抓取该网页。 抓取HTTP响应很容易,而抓取浏览器响应该响应中包含的客户端脚本时显示的内容要困难得多。 如果屏幕抓取是唯一的选择,那么以下是成功的一些关键: 尽可能轻松地更改所需的样式。 如果可能,将模式存储为文本文件或资源文件。 使其他开发人员(或您自己在3个月内)很容易理解您期望找到的标记。 验证输入并抛出有意义的异常。 在解析代码中,请小心以使异常非常有用。 目标站点将随您而变,并且发生这种情况时,您希望您的错误消息不仅告诉您代码的哪一部分失败
  • 如何在IPython Notebook中打开交互式matplotlib窗口?(How can I open the interactive matplotlib window in IPython notebook?)
    问题 我将IPython与--pylab=inline ,有时想快速切换到交互式,可缩放的matplotlib GUI来查看图(在终端Python控制台中绘制图时会弹出的图)。 我该怎么办? 最好不要离开或重新启动我的笔记本。 IPy笔记本中的内联绘图的问题在于它们的分辨率有限,我无法放大以查看一些较小的部分。 使用从终端启动的maptlotlib GUI,我可以选择要放大的图形矩形,并相应地调整轴。 我尝试过 from matplotlib import interactive interactive(True) 和 interactive(False) 但这什么也没做。 我在网上也找不到任何提示。 回答1 根据文档,您应该能够像这样来回切换: In [2]: %matplotlib inline In [3]: plot(...) In [4]: %matplotlib qt # wx, gtk, osx, tk, empty uses default In [5]: plot(...) 然后会弹出一个常规绘图窗口(可能需要在笔记本计算机上重新启动)。 我希望这有帮助。 回答2 如果您要做的只是从内联图切换到交互式图,然后再切换回去(以便可以平移/缩放),则最好使用%matplotlib magic。 #interactive plotting in separate
  • 史上最全的大数据学习资源(Awesome Big Data)
    为了让大家更好地学习交流,过往记忆大数据花了一个周末的时间把 Awesome Big Data 里近 600 个大数据相关的调度、存储、计算、数据库以及可视化等介绍全部翻译了一遍,供大家学习交流。 关系型数据库管理系统 MySQL 世界上最流行的开源数据库。PostgreSQL 世界上最先进的开源数据库。Oracle Database - 对象关系数据库管理系统。Teradata - 高性能 MPP 数据仓库平台。 框架 Bistro - 用于批处理和流分析的通用数据处理引擎。它基于一种新的数据模型,该模型通过函数来表示数据,并通过列操作来处理数据,而不仅仅使用 MapReduce 或 SQL 等传统方法来设置操作。IBM Streams - 分布式处理和实时分析平台。可以和大数据生态系统中的许多流行技术 (Kafka、HDFS、Spark等) 集成Apache Hadoop -分布式处理框架。集成了 MapReduce(并行处理)、YARN(作业调度)和HDFS(分布式文件系统)。Tigon - 高吞吐的实时流处理框架。Pachyderm - Pachyderm 是一个基于 Docker 和 Kubernetes 的数据存储平台,可以用在重复的数据处理和分析场景。Polyaxon - 一个可复制、可扩展的机器学习和深度学习平台。 分布式编程 AddThis Hydra -
  • 使用Python进行网页抓取[关闭](Web scraping with Python [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 1年前关闭。 改善这个问题 我想从网站上获取每天的日出/日落时间。 是否可以使用Python抓取Web内容? 使用了哪些模块? 有没有可用的教程? 回答1 结合使用urllib2和出色的BeautifulSoup库: import urllib2 from BeautifulSoup import BeautifulSoup # or if you're using BeautifulSoup4: # from bs4 import BeautifulSoup soup = BeautifulSoup(urllib2.urlopen('http://example.com').read()) for row in soup('table', {'class': 'spad'})[0].tbody('tr'): tds = row('td') print tds[0].string, tds[1].string # will print date and sunrise 回答2 我真的会推荐Scrapy。 引用已删除的答案: Scrapy爬行比机械化最快,因为它使用了异步操作(在Twisted之上)。 Scrapy在libxml2之上对解析(x
  • (一)Prometheus监控--安装和配置
    (一)、概述1、什么是prometheusPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。Prometheus目前在开源社区相当活跃。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。2、Prometheus的特点 多维度数据模型。 灵活的查询语言。 不依赖分布式存储,单个服务器节点是自主的。 通过基于HTTP的pull方式采集时序数据。 可以通过中间网关进行时序列数据推送。 通过服务发现或者静态配置来发现目标服务对象。 支持多种多样的图表和界面展示,比如Grafana等。3、基本组件Prometheus生态包含多个组件,其中许多的组件都是可选的. Prometheus Server: 用于收集和存储时间序列数据。 Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server
  • 如何从dygraph保存交互式图表(How to save interactive charts from dygraph)
    问题 我使用dygraph生成交互式图形。 我可以在R Studio和浏览器的“查看器”窗口中查看它们。 保存这些图(例如html?)最方便的方法是什么? 我可以邮寄吗? 我运行R studio 0.98.507, sessionInfo()给出: R version 3.1.0 (2014-04-10) Platform: x86_64-w64-mingw32/x64 (64-bit) locale: [1] LC_COLLATE=German_Austria.1252 LC_CTYPE=German_Austria.1252 LC_MONETARY=German_Austria.1252 LC_NUMERIC=C [5] LC_TIME=German_Austria.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] PerformanceAnalytics_1.1.0 xts_0.9-7 zoo_1.7-11 MASS_7.3-33 [5] cluster_1.15.2 RODBC_1.3-10 loaded via a namespace (and not attached): [1] grid_3
  • Grafana+Prometheus监控系统安装
    简介: grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。官网(http://docs.grafana.org/)。 用到的工具: Docker,本文大量使用了Docker来启动各个应用。Prometheus,负责抓取/存储指标信息,并提供查询功能。Grafana,负责数据可视化。JMX exporter,提供JMX中和JVM相关的metrics。Tomcat,用来模拟一个Java应用。 先讲一下大致步骤: 利用JMX exporter,在Java进程内启动一个小型的Http server配置Prometheus抓取那个Http server提供的metrics。配置Grafana连接Prometheus,配置Dashboard。 1. exporter介绍 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据: node_exporter 服务器监控 #安装node_exporter,需要放在该服务器中 tar -zxvf node_exporter-0.18.1.linux-amd64
  • 将图表绘制到 ASP.NET MVC 4(Razor,C#)网站中 [关闭](drawing charts into ASP.NET MVC 4 (Razor,C#) web sites [closed])
    问题 关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来关注一个问题。 2年前关闭。 改进这个问题 是否可以通过 ASP.NET MVC 4 (Razor) 使用 C# 绘制图表(曲线、直方图、圆)。 我正在尝试从我的数据库中提取的数据制作一些图形。 但是,我找不到方法。 请问有什么建议吗? 非常感谢 ! 回答1 有一个图表助手,它与 Razor 配合得很好,使您能够非常轻松地构建数据的图表、直方图和其他图形表示。 或者你可以尝试使用一些 jQuery/HTML5/Javascript 库: Highcharts 是一个用纯 HTML5/JavaScript 编写的图表库,为您的网站或 Web 应用程序提供直观的交互式图表。 jqPlot 是一个用于 jQuery Javascript 框架的绘图和图表插件。 Raphaël 是一个小型 JavaScript 库,它可以简化您在网络上使用矢量图形的工作。 还有更多,以上只是部分示例; 回答2 当您想以图形形式显示数据时,可以使用 Chart helper。 Chart helper 可以呈现以各种图表类型显示数据的图像。 您可以为图表创建一个具有剃刀代码的视图,如下所示(假设它的 MyChart.cshtml)。 来自主题数组的条形图 @{ var myChart = new
  • 从网站抓取数据的最佳方法是什么? [关闭](What's the best way of scraping data from a website? [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 我需要从网站中提取内容,但是该应用程序未提供任何应用程序编程接口或另一种以编程方式访问该数据的机制。 我找到了一个有用的第三方工具Import.io,该工具提供了用于抓取网页和构建数据集的即点即用功能,唯一的是我想将数据保存在本地,并且我不想订阅任何订阅计划。 该公司使用哪种技术来抓取网页并构建其数据集? 我发现一些Web抓取框架pjscrape和Scrapy是否可以提供这样的功能 回答1 您肯定会想从一个好的Web抓取框架开始。 稍后,您可能会认为它们太过局限,可以将自己的库放在一起,但没有大量的抓图经验,那么您的设计就会比pjscrape或scrapy糟糕得多。 注意:我在这里使用的术语“抓取和抓取”基本上可以互换。 这是我对您的Quora问题的回答的副本,它相当长。 工具 根据您喜欢的浏览器,非常熟悉Firebug或Chrome开发者工具。 当您浏览要从中提取数据的站点并确定哪些URL包含要查找的数据以及构成响应的数据格式时,这是绝对必要的。 您将需要具备HTTP和HTML的良好工作知识,并且可能希望在中间代理软件中找到一位像样的人。 您将需要能够检查HTTP请求和响应
  • 在Google交互式条形图的内部条顶部放置标签(put labels on top of inside bar in google interactive bar chart)
    问题 我现在已经使用Google柱形图创建了条形图 我的数据表中只有整数值,但是google用浮点值除acis,有没有办法强制图表仅标记整数? 有什么方法可以在条形图的顶部或内部显示值标签? 我找到了图像图表的某种方法,但我想保持图表互动性 回答1 对于第一个问题,您可以使用gridlines属性,请看一下这篇文章以了解如何使用它。 对于第二个问题,我不太了解。 当您使用鼠标进入栏时,带有值的弹出窗口尚未显示在栏的顶部吗? 回答2 到目前为止,还没有直接的解决方案,因为柱状图不支持注释。 但是,让我分享一下解决方法:您可以创建一个带有两个具有相同数据(与柱形图的数据)的系列的组合图以及注释列。 将第一个系列的类型设置为bar ,将另一个系列的类型设置为line 。 最后,将第二个系列的visibleInLegend , lineWidth和pointSize属性分别指定为false和0s 。 var data = new google.visualization.DataTable(); data.addColumn({ type: 'string', label: 'Labels' }); data.addColumn({ type: 'number', label: 'Bar Series' }); data.addColumn({ type: 'number', label
  • 刮擦JavaScript生成的网页数据(Scrape web page data generated by javascript)
    问题 我的问题是:如何从此网站http://vtis.vn/index.aspx抓取数据,但是直到您单击例如“ Danhsáchchậm”,该数据才显示。 我已经非常努力地尝试,当您单击“ Danhsáchchậm”时,这是onclick事件,它触发了一些javascript函数js函数之一是从服务器获取数据并将其插入标签/占位符,然后在此时,您可以使用firefox之类的方法检查数据,是的,数据将显示给网页上的用户/查看者。 再次,我们如何以编程方式废弃此数据? 我编写了一个抓取函数,但是它当然无法获取我想要的数据,因为只有在单击“ Danhsáchchậm”按钮后,该数据才可用 <?php $Page = file_get_contents('http://vtis.vn/index.aspx'); $dom_document = new DOMDocument(); $dom_document->loadHTML($Page); $dom_xpath_admin = new DOMXpath($dom_document_admin); $elements = $dom_xpath->query("*//td[@class='IconMenuColumn']"); foreach ($elements as $element) { $nodes = $element-
  • 影响d3.js中多个单独图表的交互?(Interactions that affect multiple separate charts in d3.js?)
    问题 我正在尝试在d3.js中创建一个包含两个图表的数据可视化:平行轴图和水平颜色条形图(我只是用这个名字组成,但是基本上是一系列彩色矩形)。 平行轴图中的每一条线都与色条图中的一组矩形相关联。 现在,将鼠标悬停在给定的行上将突出显示该行,而将鼠标悬停在给定的矩形上将突出显示该组矩形。 我的目标是在用户将鼠标悬停在任一图表上时,在相反的图表上突出显示关联的线或一组矩形。 如果我用相同的函数生成两个图表,这似乎很简单。 但是,赋予每个图表自己的功能并以某种方式连接它们会更加整洁(并且更加可重用)。 我尝试让每个图表内的mouseover函数都调用一个在较高级别定义的函数,该函数会影响两个图表,但是这似乎对没有鼠标悬停的图表没有任何影响。 由于我仍然不完全了解d3.js在底层上的工作方式,因此,我真的很想确认这是设置代码的一种可行方法。 我的代码又长又复杂,我真的只想要结构上的建议,所以这里是基本概述: function chart1(){ make chart function mouseover(d,i){ do stuff chart1_globalmouseover(d,i); } chartElement.on("mouseover", function(d,i){mouseover(d,i)}); } function chart2(){ make chart