2015-01-06 5 views
0

저는 PHPCrawler 클래스를 사용하여 eBay와 같은 다른 상점에서 제품 제목을 얻습니다. 라이브러리는 웹 페이지의 검색 페이지가 정상적으로 표시되지 않는 경우를 제외하고 내 애플리케이션에서 지원하는 모든 상점에서 잘 수행됩니다. 다른 상점 웹 사이트처럼 시작된 Chrome Debugger를 통해 웹 사이트의 요청을 따라 갔을 때 요청 URL은 Chrome의 주소 표시 줄에 입력 한 URL과 동일하지만 스크립트로 시작된다는 것을 알았습니다. 크롤링 할 클래스.PHPCrawler 라이브러리에서 콘텐츠를 가져올 수 없습니다.

크롤러 클래스에서 리디렉션되는 페이지를 가져올 수있는 방법이 있습니까? 리디렉션은 헤더가 아니라 자바 스크립트를 통해 클라이언트 측에서 수행되기 때문에 setFollowRedirects 메서드를 사용했지만 운이 없었습니다. 게다가 일반 요청을 한 후에 추가 게시물 요청을 발견했습니다. 게시물 데이터도 추가하려고 시도했지만 결과가 빈 결과 집합으로 표시되고 가져온 페이지를 출력 할 때 나열된 제품이 없어도 얻을 수 있습니다. .

사이드 노트 : 블링크 스토어 웹 사이트는 ASP.net 사이트이므로 페이지를 크롤링 할 수없는 이유가 무엇입니까? 나는 표준 PHP 컬 기능을 사용하여 페이지를 가져 오지 시도하고 응답을 반향 한

UPDATE는 페이지가 불완전 에코 상쾌한 유지된다.

+0

curl_exec()를 호출하기 전에 다음 줄을 추가하면 모든 개발자 도구, 예를 시도 Fiddler, Chrome 개발자 도구를 사용하여 요청을 검사 할 수 있습니까? HTTP 메소드, 요청 헤더 등은 중요 할 수 있습니다. 또는 [PhantomJS] (http://phantomjs.org/)와 함께 일부 크롤러 API (예 : [unicrawler] (http://bestmike007.com/unicrawler)를 통해 원하는 것을 얻을 수 있습니다. – bestmike007

+0

@ bestmike007 예 개발자 도구를 통해 요청을 모니터링 한 결과 페이지가 처음에는 제품 목록없이 표시된다는 것을 알았습니다. 페이지 시작 부분에 post 메소드가있는 양식 태그가 있으며 동일한 링크에 제출합니다. 그런 다음 페이지는 자바 스크립트를 사용하여 해당 양식을 제출하여 제품 목록으로 새로 고침합니다.이 양식을 새 POST 요청으로 사용하여 다른 동작을 모방하려고합니다. 무슨 일이 일어나는지 알려 드리겠습니다. 도움을 주셔서 감사합니다. –

답변

0

마지막으로 동일한 원격 페이지에서 cURL을 두 번 사용하여 문제가 해결되었지만 웹 사이트에서 필요한 유효한 쿠키가 없으면 검색 결과가 나타나지 않으므로 첫 번째 cURL 요청은 파일에서 쿠키를 가져 오는 것입니다 먼저 다른 cURL 요청이 콘텐츠를 가져 오는 데 사용됩니다.

그냥

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
관련 문제