2013-11-02 2 views
1

Python의 아름다운 스프로 HTML을 근근이 살아가는 기본 사항을 알고 있습니다. 그러나 this soccer statistics 페이지는 플레이어가 재생 한 분에 데이터를 얻기 위해 AJAX 호출을합니다. (나는 방화 광을 사용하여 네트워크 호출을 확인했다).Python을 사용하여 AJAX로 웹 페이지 긁기

내 질문 :이 정보를 "긁어 모으기"위해 파이썬을 사용할 수 있습니까? 내가 필요로하는 도구는 무엇이며, HTML을 넘어서 무엇을 알아야할까요? (저는 현재 JavaScript와 AJAX를 읽고 있습니다).

나는이 아닌 특정 질문에 대해 사과하지만 난하거나 존재하지 않을 수 있습니다 도구에 대해 Google에 방법을 모르겠어요.

업데이트 : 몇 일 후 Selenium을 사용하여 파이썬에서 PhantomJS과 함께 해결책을 찾았습니다. 기본적으로 Selenium을 사용하여 각 링크로 이동하여 페이지를로드 할 때까지 기다렸다가 정보를 긁어 냈습니다. PhantomJSSelenium의 헤드리스 웹 드라이버로 사용됩니다. 모드 족이를 닫으려는 이유

은 이해하지만, 조언 사람들이 올바른 방향으로 나를 시작부터 나를 여기에 매우 도움이되었다했다. 내 질문은 어떤 툴이 가장 좋은지에 대한 것이 아니라 파이썬에서 어떻게 할 수 있는지에 관한 것입니다.

+1

[Selenium] (https://pypi.python.org/pypi/selenium)은 다른 선택입니다. – thirtydot

+0

언급 한 내용을 들었습니다. 그러나 Selenium은 Python에 있으며, 아래의 포스터에서는 Python이 올바른 도구가 아니라고 말합니다 ...? – Heisenberg

+1

PhantomJS와 Serenium 모두 좋은 선택이며 문제는 두 가지 중 하나를 사용하여 쉽게 해결할 수 있습니다. Anurag Uniyal은 HTML 만 구문 분석하고 JavaScript를 실행할 수없는 Beautiful Soup 대신 실제 브라우저를 활용하는 것을 사용해야한다는 것을 의미했습니다. – thirtydot

답변

5

파이썬을 사용하는 것은 불필요하며 많은 경우에 작동하지 않습니다는 가장 좋은 방법은 적절한 브라우저를 실행하고 전체 DOM에 액세스 할 수 있습니다로 모든 스크래핑을 수행하는 자바 스크립트를 사용하는 것입니다, 당신은 심지어 이벤트에 바인딩 할 수 있습니다.

스크립팅을 지원하는 좋은 헤드리스 브라우저가 많이 있습니다. 가장 좋아하는 브라우저는 PhantomJS입니다. 웹 페이지를로드하고 스크래핑하거나 이미지로 저장하는 데 사용할 수 있습니다.

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    page.render('github.png'); 
    phantom.exit(); 
}); 

그러나이된다고하는 프레임 워크를 사용하면 AJAX 정보를 크롤링 파이썬을 사용해야하는 경우 예컨대 pjscrape

+0

이것은 정확히 내가 알아야 할 것입니다! 그렇지 않으면 Python 솔루션에 대해 수많은 시간을 할애 할 것입니다. 제안한 솔루션에 대한 자습서/문서를 가르쳐 주시겠습니까? (즉, 자바 스크립트를 사용하여 + 적절한 브라우저를 실행?) – Heisenberg

+1

이동을 phantomjs 및 pjscrape 튜토리얼을 통해, 그들이 쉽고, 재미 있고 강력한 –

+0

을 나는 또한 주요있는 동안 casperjs, 목적은 기능 테스트가 큰 스크레이퍼로 밝혀입니다 것으로 나타났습니다 뿐만 아니라 phantomJS를 기반으로 실행되기 때문에 매우 쉽습니다. http://casperjs.org/ –

0

, 어쩌면 당신이 ghost.py 프로젝트를 시도 할 수 있습니다 PhantomJS를 통해 구축 할 수 있습니다. ghost.py은 PyQt 웹킷을 사용하여 Python의 웹킷 웹 클라이언트입니다. 관련 js 코드를 실행 한 후 AJAX 정보를 얻을 수 있습니다.

어쨌든 js에 익숙한 사용자라면 PhantomJS를 선택하는 것이 좋습니다. 희망은 내 대답에 도움이됩니다.

관련 문제