2008-10-15 6 views
12

아약스 요청으로 보이는 대부분의 콘텐츠가 생성되는 동적 웹 사이트를 긁는 가장 좋은 방법은 무엇입니까? Mechanize, BeautifulSoup 및 Python 콤보에 대한 이전 경험이 있지만 새로운 것을 찾고 있습니다.동적 웹 사이트 스크랩

- 편집 - 자세한 내용은 : CNN primary database을 다 써야합니다. 거기에는 풍부한 정보가 있지만 API는없는 것으로 보입니다.

답변

7

이 (자신의 어려움과 함정이있다) 당신은 사이트별로 자바 스크립트를 리버스 엔지니어링, 또는 자바 스크립트 엔진을 구현하고 스크립트를 실행해야 하나 때문에 어려운 문제이다.

그것은 무거운 무게 솔루션입니다,하지만 난 그리스 몽키 스크립트로 이렇게 사람을 본 적이 - 요소를 모두 렌더링 및 자바 스크립트를 실행 한 다음 긁어 파이어 폭스를 할 수 있습니다. 필요한 경우 페이지에서 사용자 작업을 시작할 수도 있습니다.

-Adam

3

아담 데이비스의 조언은 고체이다.

또한 JavaScript가 수행하는 작업을 "리버스 엔지니어링"하고 페이지를 긁어내는 대신 JavaScript가 발행하는 HTTP 요청을 발행하여 결과를 직접 해석 할 것을 제안합니다. JSON 형식으로 멋지고 파싱하기 쉽습니다.) 이 전략은 자바 스크립트의 복잡성에 따라 사소한 것에서부터 악몽에 이르기까지 다양합니다.

가장 좋은 가능성은 물론, 개발자 친화적 인 API를 구현하는 웹 사이트의 관리자들을 설득하는 것입니다. 모든 차가운 아이들은 요즘하고 있습니다. 8-) 물론, 데이터를 자동화 된 방식으로 긁어내는 것을 원하지 않을 수도 있습니다.이 경우, 페이지를 점점 긁어 모으기가 어렵게 만드는 고양이 마우스 게임을 기대할 수 있습니다 :-(

0

이것은 꽤 일반적인 문제인 것처럼 보입니다. 왜 누군가가 프로그래밍 방식의 브라우저를 개발하지 않았는지 궁금합니다. 저는 인수로 URL을 사용하여 명령 줄에서 호출 할 수있는 Firefox를 구상하고 있습니다. 페이지를로드, 결과 파일을 초기 페이지로드 JS의 모든 이벤트를 실행하고 저장합니다. 이미 이렇게 파이어 폭스와 다른 브라우저를 의미

을, 왜 우리는 단순히 UI 물건을 벗겨 수없는 이유는 무엇입니까?

+2

사람들이 webkit으로이 작업을 수행했습니다. 예 : http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/comment-page- 1 – hoju

4

세 테스트 용 도구 인 lenium IDE는 많은 스크린 스크래핑에 사용 된 도구입니다. Javascript window.alert()와 팝업 창을 일반적으로 잘 처리하지 못하는 몇 가지 사항이 있지만 click 이벤트를 실제로 트리거하고 텍스트 상자에 입력하여 페이지에서 작업을 수행합니다. IDE 부분은 Firefox에서 실행되기 때문에 Firefox가 처리하는 것처럼 세션 관리 등을 모두 수행 할 필요가 없습니다. IDE는 테스트를 기록하고 재생합니다.

는 또한 C 등 #, PHP, 자바, 컴파일 테스트/셀레늄 서버에서 실행되는 스크레이퍼를 구축하는 코드를 보냅니다. 나는 Selenium 스크립트 중 몇 가지 이상을 사용하여 데이터베이스에서 스크랩 된 데이터를 훨씬 쉽게 저장하는 것과 같은 작업을 수행했습니다.

스크립트 ("clickAndWait", "submitButton") 같은 것들로 구성되고, 쓰기 및 변경 상당히 간단합니다. 당신이 묘사 한 것을 볼 가치가 있습니다. 내가 찾은

7

가장 좋은 방법은 그들을 다시 보내 스크립트를 사용하여 다음 XMLHttpRequests를 모니터링하는 파이어 버그를 사용하는 것이 었습니다.

1

아마 가장 쉬운 방법은 C# (또는 다른 언어)로 IE webbrowser 컨트롤을 사용하는 것입니다.브라우저의 모든 내용에 액세스 할 수 있으므로 쿠키, SSL 등을 신경 쓰지 않아도됩니다.

2

약간의 학습 곡선이 있지만 Pamie (Python) 또는 Watir (Ruby)와 같은 도구를 사용하면 IE 웹 브라우저에 래치하고 요소를 가져올 수 있습니다. 브라우저를 에뮬레이트 할 필요가 없으므로 Mechanize 및 기타 HTTP 레벨 도구보다 쉽습니다. 브라우저에 html 요소를 요청하면됩니다. Javascript/Ajax 호출을 리버스 엔지니어링하는 것보다 훨씬 쉬울 것입니다. 필요한 경우 Pamie와 함께 아름다운 수프와 같은 도구를 사용할 수도 있습니다.

1

IE 웹 브라우저 컨트롤에는 shvwdoc.dll api와 mshtml을 중심으로 계층화 된 모든 불일치를 처리하고 프레임 워크를 제공하는 고품질의 소프트웨어를 정당화 할 수있는 모든 종류의 단점과 해결 방법이 있습니다.

0

내가 가지고있는 첫 번째 질문 : 자바 스크립트없이 사이트가 절대적으로 작동하지 않는 것을 확인할 수 있습니까? 당신은 자바 스크립트를 끄면 얼마나 많은 사이트가 여전히 쓸모가 있는지 놀랄 것입니다. 아마도 약간 다른 URL 세트로 이동하게 될 것입니다.