2011-04-01 2 views
0

아주 잘 작동하지만 특정 limits.now에서 해당 경계를 제거하려는 화면 스크래핑 모듈을 만들었지 만 예측할 수없고 다른 오류가 발생했습니다. 무슨 일이 있어도 우르르가 와트가 실제로 허벅지에 들어가게합니다. 처음에는 화면 긁기를 사용하여 co.in/co.uk/nl/de/com과 같은 키워드 (검색 컨텐츠) google의 모든 검색 엔진 세트에 대한 결과를 검색했습니다.화면에서 PHP 문제가 생겼습니다

하지만 이제 루프에서 여러 검색 엔진 및 여러 키워드에 대한 논리를 다듬어야했습니다.

keyword  se   company   rank 
telephony google.co.in airtel   01 
telephony google.co.in bsnl   04 
telephony google.co.in aircel   06 
telephony google.co.in idea   03 
mobile op google.co.uk airtel   09 
mobile op google.co.uk bsnl   04 

등 .. 을 6 개 이상의 키워드를 모두 표시 검색 엔진 및 모든 회사 :

은 예와 함께이 체크 아웃 할 수 있습니다.

처음에 나는 하나의 키워드, 모든 회사에 대해 그것을 모았습니다. 그러나 이제 모든 키워드, se, company의 목록을 만들어야합니다. 간단 해요하지만 내가 이러한 오류에 직면 할 루프를 사용 :

메모리는 343,322,111 바이트 ... [내가보기 위해서는 ini_set 사용이 ('메모리') FUNC을 제거하기 위해 (오버 플로우 할당
  1. 합 요청 구글 후
  2. capcha를 제거하려면 sleep이나 usleep()을 사용했으나 목적을 해결하지 못했습니다. 오류 : 연결 재설정 usleep에서 30 초 이상 사용할 수 없습니다. 정보를 검색하는 데 몇 시간이 걸릴 수 있습니다. 내 코드 검색 데이터 Google의 5pages에 대해서는 50responses.Lib을 사용합니다. simple_html_dom.php

1 페이지 페이지를 넘지 만 3pages 이상은 안됩니다. 어떻게해야합니까/사용합니까 ??

+0

시간 제한을 0으로 설정해 보았습니까? "set_time_limit (0);". 설명서 : http://php.net/manual/en/function.set-time-limit.php (기본값은 30 초입니다.) – frail

+0

네, 그렇습니다. 그 중 하나만 사용할 수 있습니다. 제한된 대역폭이있을 수 있습니다. –

답변

0

sleep() 쿼리에서 &num=100의 기능이 문제를 해결합니다. & num = 100을 사용하면 Google에 요청 횟수가 10 회 줄어 듭니다. 그리고 모든 요청 사이에 나는 5 초의 지연을 사용하여 구글이 유효하고, 진짜이며, 인간적인 요청 인 것처럼 보인다.

2

captcha를 그들이 당신이 메모리 문제에 관해서는, 우리는 몇 가지 않고 당신을 도울 수 http://code.google.com/intl/en/apis/customsearch/v1/overview.html

지금부터 자신의 유료 서비스를 사용하도록 상업적으로 그것을 사용하고 싶지 발견을 말하는 구글의 방법입니다 코드 개요. (그러나 일부는 절약하려면 전체 페이지 또는 DOM 구문 분석 트리를 보관하는 대신 키워드를 분할해야합니다.)

+0

여기 어떻게 큰 코드를 작성할 수 있습니까? ini_set() func에 의해 해결되었으므로 메모리는 문제가 아닙니다. 하지만 지금은 prob 어떻게 특정 시간과 연결을위한 코드 excution을 일시 중지하는 방법을 Google에 알려줄 수 있습니까? –

+0

권장 JSON API를 사용하면 연결이 재설정되거나 정지됩니다. – mario

+0

usleep는 작동하지만 wats happenign을 모르지만 ... 내 코드가 완료되지 않았습니다 .i 두 가지 문제가 있습니다. 연결 재설정 또는 capcha.wat을 수행하십시오. –

0

어떤 제한 시간을 적용해도 문제는 해결되지 않습니다. 당신이해야 할 일은 자신이 실제로 사용하는 결과와 일치하지 않는 API를 사용하거나 100 개의 프록시에 등록하고 모두 라운드 로빈 방식으로 반복하는 것입니다. 100 개의 프록시를 사용하여 Google 24/7을 쉽게 다룰 수 있으며 단지 $ 100의 비용이 듭니다. 요청할 때마다 쿠키를 지우고 훌륭한 사용자 에이전트를 설정하십시오.

나는 API를 지불하는 대신 전화 통화 량이 많아지고 돈을 낭비한다고 생각합니다. 예, 기술적 인면에서 본인의 서비스 약관에 위배됩니다. 그러나 귀하가하는 일이 무해하다고 생각됩니다.

0

10 개의 결과 중 첫 번째 5 페이지를 선택하는 대신 50 개 결과 중 1 페이지를 선택하십시오!

일반 사용자 에이전트를 사용하여 봇처럼 보이지 않도록하십시오. 자신을 좀 덜 의심스럽게 만들려면 실제 사용자처럼 Google의 리디렉션 URL을 사용하여 가끔씩 결과 링크 중 일부를 따르십시오.

프록시를 임대 할 수도 있지만 대부분의 경우 위의 기술로 충분합니다.

관련 문제