2016-11-05 1 views
-1

내가 다음 링크에서 다음 SVG 년대를 긁어하려고 차트의 단어가 필요하지 않습니다 (그래프 자체). 그러나 이전에 svg 이미지를 긁어 본 적이 없으며 가능한 경우 확실하지 않습니다. 둘러 보았지만 직접이 작업을 수행 할 유용한 파이썬 패키지를 찾을 수 없었습니다.스크래핑 SVG 차트

나는 셀레늄을 사용하여 파이썬으로 이미지의 스크린 샷을 찍은 다음 PIL을 사용하여 이미지를 자르고 svg로 저장할 수 있음을 알고 있습니다.하지만이 차트를 가져 오는 더 직접적인 방법이 있는지 궁금합니다. 페이지. 유용한 패키지 또는 구현이 도움이 될 것입니다. 고맙습니다.

편집 : 몇 가지 아래 표를 얻었다 있지만 확실하지 왜 여기에 내가 .. 내 방식을 구현하는 것이 방법이다

import sys 
import time 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 

class Screenshot(QWebView): 
def __init__(self): 
    self.app = QApplication(sys.argv) 
    QWebView.__init__(self) 
    self._loaded = False 
    self.loadFinished.connect(self._loadFinished) 

def capture(self, url, output_file): 
    self.load(QUrl(url)) 
    self.wait_load() 
    # set to webpage size 
    frame = self.page().mainFrame() 
    self.page().setViewportSize(frame.contentsSize()) 
    # render image 
    image = QImage(self.page().viewportSize(), QImage.Format_ARGB32) 
    painter = QPainter(image) 
    frame.render(painter) 
    painter.end() 
    print 'saving', output_file 
    image.save(output_file) 

def wait_load(self, delay=0): 
    # process app events until page loaded 
    while not self._loaded: 
     self.app.processEvents() 
     time.sleep(delay) 
    self._loaded = False 

def _loadFinished(self, result): 
    self._loaded = True 

s = Screenshot() 
s.capture('https://finance.yahoo.com/quote/AAPL/analysts?p=AAPL', 'yhf.png') 

나는 다음 차트에서 이미지를 취할 PIL에서 자르기 기능을 사용 .

+0

그래서 svg 파일을 가져와 png로 변환하면됩니까? –

+1

당신의 문제는 그 SVG가 자바 스크립트에 의해 생성된다는 것입니다. 모든 솔루션은 HTML을로드 할뿐만 아니라 DOM에서 인라인 SVG를 추출하기 전에 페이지에서 모든 JS를 실행하는 작업을 포함합니다. 간단한 HTML 스크레이퍼는 사용자의 요구를 충족시키지 않습니다. –

답변

1

웹에 QWebView를 사용하는 것은 이상한 일이지만, "나는 웹 스크레이퍼가 아닙니다. 나는 임베디드 브라우저입니다."라고 서버에 말하는 이점이 있음을 알고 있습니다. 이 접근법은 방탄하지 않습니다. 사용자가 비정상적으로 행동하는 경우 스크레이퍼가 계속 감지 될 수 있습니다.

이것은 내가 어떻게 할 것입니다 : 페이지를 다운로드하는

  1. 아이디를 사용 requests을 (IP-금지에 대처하기 위해 실제 IP 요지를 숨 깁니다 프록시를 통해 할 수있다).
  2. 그런 다음 BeautifulSoup을 사용하여 페이지를 구문 분석하면 얻으려는 svg 파일의 URL을 얻을 수 있습니다.
  3. 그럼 내가 SVG 파일을 다운로드하고, 대신 Qt는을 사용하여 계속 리소스를 DOM 검사 또는 추출 허용 웹보기에서 방법을 찾고 싶을 경우 something like this

사용하여 이미지로 변환 것 다운로드 한보기.

+0

도움을 주셔서 감사합니다! – hellowrld

관련 문제