2012-01-17 5 views
1

나는 Mechanize 및 BeautifulSoup를 사용하여 아래 테이블에서 데이터를 올바르게 가져온 python 스크립트를 사용했습니다. 그러나이 사이트는 최근에 자바 스크립트로 테이블의 인코딩을 변경했으며 테이블에 여러 페이지가 있기 때문에 문제가 발생했습니다.여러 페이지가있는 자바 스크립트 테이블의 Python BeautifulSoup

http://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2011&month=0&season1=&ind=0&team=25&players=0

예를 들어, 위의 링크에서, 어떻게 테이블 모두 1 페이지와 2 페이지에서 데이터를 잡을 수 있을까? FWIW, URL은 변경되지 않습니다.

답변

4

가장 좋은 방법은 모든 이해하는 머리가없는 브라우저 예 phantomjs를 실행하는 것입니다 차례로 코드의 기본 동작을 테스트 특정 작업을 수행하기 위해 브라우저를 자동화하는 funcitonal 테스트 프레임 워크입니다 자바 스크립트, DOM 등의 복잡하지만 Javascript에서 코드를 작성해야하며, 원하는대로 할 수있는 이점이 있습니다. BeautifulSoup을 사용하여 HTML을 파싱하는 것은 잠시 동안 멋지지만 장기적으로는 두통입니다. DOM에 액세스 할 수있는 이유는 무엇입니까?

0

기계어가 자바 스크립트를 처리하지 않습니다.

(Firefox의 Firebug 또는 Chrome의 개발자 도구를 사용하여) 버튼을 클릭 할 때 어떤 요청을했는지 확인할 수 있습니다. 페이지 뒤에서 실행중인 자바 스크립트를 리버스 엔지니어링하고 파이썬 코드를 사용하여 비슷한 작업을 시도해보십시오. Spidermonkey 또는

Selenium을 사용해보세요.

셀레늄은

+0

감사합니다. :) 확인해 보겠습니다. –

관련 문제