2012-03-01 5 views
1

Google은 검색 엔진 결과 페이지를 스크랩하고 클라이언트 웹 사이트 위치를 해당 도메인의 맞춤 보고서 스위트로 출력하는 PHP 스크립트를 보유하고 있습니다.스크랩 PHP 스크립트를 수정해야 함

Google은 2 월 첫 주에 스크립트를 변경하여 스크립트가 페이지의 도메인을 감지하지 못하게했으며 현재 본사의 개발자가 없거나 다른 직원이 문제를 해결할 수 없습니다.

나는 개발자가 아니기 때문에 스크립트에서 문제가있는 곳을 알고있을 것이라고 확신합니다. 각 행이 실제로 무엇을하고 있는지 확실하지 않습니다. Google 스크립트는 검색 결과의 관련 클래스를 사용하여 찾고있는 것이 실제로 어디에 있는지 판단합니다.

스크립트 자체가 계속 실행되어 HTML을 출력합니다. 순전히 페이지의 '도메인'이 검색되지 않는 것을 찾는 스크립트의 일부입니다.

문제가 무엇인지 알려면 많은 정보가 필요할 것입니다. 필요한 경우 파일/코딩을 제공해 드리겠습니다. 필자는 필요한 경우 이것에 대한 수정을 지불 할 준비가되어있을 것입니다. 나는 문제가 발생 느끼는 경우 아래

은 다음과 같습니다 -

// Note our use of ===. Simply == would not work as expected 
// because the position of 'a' was the 0th (first) character. 
if ($pos4 === false) { 
    $mystring5 = $val[0]; 
    $findme5 = $prevlink; 
    $pos5 = @strpos($mystring5, $findme5); 
    // Note our use of ===. Simply == would not work as expected 
    // because the position of 'a' was the 0th (first) character. 
    if ($pos5 === false) { 
     $serp = $serp + 1; 
     echo '<b>'.$serp.'.</b> '.$val[0].'<br /><br />'; 
     $link = get_string_between($val[1], 'href="', '" onmousedown'); 
     $link = str_replace('https://','',$link); 
     $link = str_replace('http://','',$link); 
     $link = str_replace('www.','',$link); 
     $link; 
     $prevlink = $link; 
     $prevlink = str_replace(strstr($prevlink, '/'), "", $prevlink); 
     $sitelen = strlen($row_site_check['website_name']); 
     $sitefrom_link = substr($link, 0, $sitelen); 
     if ($sitefrom_link == $row_site_check['website_name']) { 
      $site_found = 1; 
      $rank_postion = $serp; 
      $site_link = $link; 
      $con = mysql_connect("localhost","dbname","dbpass"); 
      if (!$con) 
      { 
       die('Could not connect: ' . mysql_error()); 
      } 

어떤 도움을 주시면 감사하겠습니다.

감사합니다.

+0

functions.php 파일에서 찾을 수 있습니다 어떤. –

+0

또한,'var_dump'는 여러분의 친구이고'get_string_between'는 여기에 정의되어 있지 않습니다.'var_dump'를 사용하여 그 값까지 기대 한 값에 도달했는지 확인하십시오. –

+1

나는 오류를 전혀 억제하지 않겠다. 장기적으로는 자신의 삶만 더 열심히 할 것입니다. – GordonM

답변

1

체크 아웃 Google rank scraper (PHP, 오픈 소스) 나는 출시와 지금까지 내가 말할 수있는 무엇을 아프게 월에 구글의 레이아웃의 변화가 없었다 이후 매일 그것을 기반으로 소프트웨어를 사용하고

.

답변을 좋아할 지 모르겠지만 그 이유는 정규식과 문자열 연산에 의존하는 것처럼 보이지만 Google에서 HTML을 구문 분석하기 위해 붙여 넣은 Rank Scraper가 DOM을 사용한다는 것입니다.
나는 개인적으로 과거에 이러한 방법을 기반으로 한 스크레이퍼를 만들려고 노력했으며, 계속 실행하려면 많은 유지 관리 작업이 필요하다는 것을 발견했습니다. 때로는 실제 못생긴 해결 방법.
DOM을 사용할 때 작은 변화는 대개 아무것도 손상시키지 않으며 그렇지 않으면 코드를 수정하는 것이 더 쉬울 수 있습니다.
지난 몇 년 동안 파서의 DOM 코드는 큰 방해없이 작동하고 있었고, 단지 2 배의 작은 변경 만이 이루어져야했습니다. 그리고 구글은 그 당시 그들의 사이트에서 많은 변화를 겪었지만 단지 악영향을 미치지 않았습니다.

위의 링크 검사기의 DOM 기능

난 당신이 strpos, 워드 프로세서가 생성 언급하지 않습니다에 대한 오류 및 경고를 억제 할 필요가 있다고 생각하지 않습니다

function process_raw($htmdata,$page) 
+0

안녕하세요, John 님, 답변 해 주셔서 감사합니다. 실제로 Google 스크립트를 최종적으로 수정했습니다. Google 검색에 대한 URL 매개 변수가 변경되어 우리의 작업이 중단되었습니다. 내가 링크 한 사이트를 알고 있습니다. 사실 위에 - 당신의 입력을 기반으로, 우리는 더 나은이 하나를 활용할 수 있도록 우리의 개발자 중 하나가 우리 서버에 설정지고 볼 수 있는지 볼 것입니다. – zigojacko