2013-09-23 3 views
1

자바 스크립트를 사용하는 서버 측에서 웹 사이트를 스크랩하고 mysql 데이터베이스로 데이터를 분석 한 후 결과를 저장하는 방법을 찾고 있습니다. 세션 만료없이 링크를 클릭하고 데이터베이스에서 데이터를 제출하여 페이지간에 이동해야합니다. phpquery 웹 브라우저 플러그인을 사용하여 가능합니까? . 나는 casperjs를 사용하여 이것을 시작했다. 나는 두 가지 방법의 장단점을 알고 싶다. 저는 코딩 공간에서 초보자입니다. 도와주세요.자바 스크립트가있는 웹 사이트 스크랩

+0

"* A or B *?" 질문은 실제로 스택 오버플로에 대한 주제가 아닙니다. phpQuery는 추가 플러그인이 필요할 수도 있지만 가능해야합니다. 즉, 사이트에 공개 API가 있는지 확인하거나 소유자에게 문의하여 소유자를 기꺼이 만들 수 있는지 확인하십시오. 좋은 API는 거의 사용하기가 더 쉬울 것입니다. –

+0

정부 사이트이며 API가 없습니다. : –

+0

당신이 원했던 데이터와 어디에 있는지 알고 있다면 당신에게 조언하는 것이 훨씬 쉬울 것입니다 ... – shennan

답변

2

PhantomJS 또는 CasperJS을 사용하고 JavaScript 선택기로 DOM을 구문 분석하여 원하는 페이지 부분을 가져 오는 것이 좋습니다. phpQuery는 PHP를 기반으로하므로 사용하지 말고 별도의 단계를 거쳐 처리해야하며 JavaScript DOM 구문 분석 만 사용해야합니다. 또한 PHP를 사용하여 클릭 이벤트를 수행 할 수 없습니다. 클라이언트 측은 PhantomJS 또는 CasperJS에서 실행해야합니다.

PHP가 서버 측 언어라면 PHP를 사용하여 전체 스크래핑 엔진을 작성할 수도 있습니다. 로그인 프로세스를 리버스 엔지니어링하고 각 요청에 대해 로그인을 유효하게 유지하는 cURL 요청과 함께 쿠키 항아리를 유지해야합니다. 웹 사이트와 세션을 설정하면 크롤링 할 링크 배열로 탐색 경로를 설정할 수 있습니다. 웹 크롤링의 기본 개념은 일부 링크에서 페이지를로드하고 페이지를 처리 ​​한 후 다음 링크로 이동하는 것입니다. 모든 페이지가 처리되고 크롤링이 완료 될 때까지이 프로세스를 계속 수행하십시오.

0

Google 가이드 Making AJAX Applications Crawlable을 스크랩하려는 웹 사이트가 해당 스킴을 채택했을 가능성이 있음 (사이트의 콘텐츠를 크롤링 할 수 있음)을 확인했습니다.

URL의 해시 조각에서 #!을 찾으려면 사이트가 AJAX 크롤링 구성표를 지원함을 크롤러에게 나타냅니다.

간단히 말하면, 이와 같은 URL을 발견하면. www.example.com/ajax.html#!key=valuewww.example.com/ajax.html?_escaped_fragment_=key=value으로 수정하십시오. 서버는 해당 페이지의 HTML 스냅 샷으로 응답해야합니다.

여기가 Full Specification

+1

) PhantomJS와 같은 것을 사용하는 것은 훨씬 더 호환 가능합니다. – Brad

+0

두 개의 큰 웹 사이트에서 사용되는 것을 보았습니다. 그러나 그다지 흔하지는 않습니다. –

관련 문제