2014-04-23 3 views
1

대화 형 차트 뒤의 데이터를 this webpage (미안, 웹 사이트에 로그인해야 함)으로 가져올 수 있습니까?대화 형 차트에서 데이터 스크랩하기

마우스로 차트 위에 마우스를 가져 가면 데이터가 나타나지만 어떻게 데이터를 가져 옵니까?

여기에 해당 웹 사이트의 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

이 웹 페이지의 소스 코드를 살펴 보았습니까? 다른 메모 : 나는 그래프가 보이지 않지만 로그인 화면처럼 보입니다. 네가 뭘보고 있는지 나는 모르겠다. –

+0

예. 있습니다. 그것은 전에 보지 못한 것들을 가지고 있습니다. – jason

+1

그런 다음 위에 올려 놓을 때이 데이터를 표시하는 언어를 조사하는 것이 좋습니다. 요즘, 그 일반적으로 자바 스크립트 및/또는 일부 jQuery 마법입니다. 어쨌든, 나는 아직도 당신이 말하는이 도표를 보지 못합니다. 당신이 준 링크가 정확하고 로그인에 의존하지 않는지 확인할 수 있습니까? –

답변

2

정보를 구문 분석해야하고 (태그에서 추측하면 파이썬에서이 작업을 수행 할 수 있습니다). 그러나 Raphael documentation을 간략히 살펴본 결과, 데이터를 다른 방법으로 빠르게 얻을 수 있다고 확신합니다. 데이터는 어딘가에 자바 스크립트 배열로 존재해야합니다. 먼저 찾으십시오.

결국이 자바 스크립트 데이터에서 찾은 SVG가 생성됩니다. SVG Path element 설명을 보면 ML 정의를 어떻게 해석해야하는지 알 수 있습니다. 그런 다음 해당 라인을 원하는 (파이썬) 데이터 세트로 파싱 할 수 있어야합니다.

그러나 저는 사진을 계속 보지 않고도 찾고있는 것을 찾을 수 없다는 것을 다시 말하고 싶습니다 (히스토그램입니까, 라인 차트입니까?). L으로 그려지는 선은 필요한 모든 것일 수 있습니다. 먼저 경로는 파이썬 세션에 표시 한 것을 가지고가는 경우에

예를 들어

, 당신이 할 수 있습니다 : 이것은 단지 올바르게 작동하는지

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 오프라인 명령 때문에 이 줄을 뒤집어 라. 하지만 다른 모든 경로가 비슷한 방식으로 생성 된 것처럼 보입니다 (데이터 세트가 아직 보지 않은 javascript 파일의 어딘가에 있다고 생각하게 만듭니다).

마지막으로이 소스 코드를 얻으려면 프로그램 검색을 위해 urllib2을 사용해야합니다.

+0

으로 평가됩니다. 찾고있어 줘서 고마워. 처음으로 나는 자바 스크립트와 관련된 긁기가 발생했습니다. – jason

관련 문제