2012-03-01 19 views
1

Googleは検索エンジンの検索結果ページをスクラップし、クライアントのウェブサイトの位置をそのドメインの特注のレポートスイートに出力するPHPスクリプトを用意しています。スクラップPHPスクリプトを修正する必要があります

Googleがページ上のドメインを検出してから私たちのスクリプトを防ぐ2月の最初の週で何かを変更し、私は現在、オフィスでの元の開発者が持っていないにも私たちの他のスタッフのうちのどれかがこの問題を解決することができます。

私はかなり確信して、私は問題はスクリプトにどこにあるか、私は開発者ではないんだと、それは、単に知っている、私はそれぞれの行が実際に何をしているのかわかりませんよ。私たちのスクリプトは、検索結果から関連するクラスを使用して、探しているものが実際にどこに位置しているかを判断します。

スクリプト自体が実行され、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、オープンソース)

をチェックし、それがリリースされ、私の知る限り何かを壊し月にグーグルのレイアウトの変更があったなかったので、私は毎日それに基づいてソフトウェアを使用しています。

答えが欲しいかどうかわかりませんが、私が貼り付けたRank Scraperが正規表現や文字列操作に頼っている間にDOMを使用してGoogleのHTMLを解析する可能性が高いです。
私は個人的に過去にそのような方法に基づいてスクレーパーを作ろうとしましたが、それを維持するためには多くのメンテナンスが必要であることがわかりました。時には実際の醜い回避策。
DOMを使用しているときに小さな変更があっても、通常は何かにダメージを与えません。そうしないとコードを変更するのが簡単になる場合があります。
ここ数年、そのパーサーのDOMコードは大きな中断なしで動作していましたが、わずか2倍の変更しか加えられませんでした。そして、Googleはその時にサイトを大きく変えました。悪影響を及ぼすことはありませんでした。

上記のリンクチェッカーのDOM機能

は、私はあなたがstrpos、ドキュメントはそれが生成言及していないため、エラーや警告を抑制する必要はないと思う

function process_raw($htmdata,$page) 
+0

こんにちはJohnさん、あなたの答えをありがとうございます。私たちは最終的に私たちのスクリプトを実際に修正しました。これは、Google検索のURLパラメータが変更されたため、私たちが壊れてしまいました。実際にはあなたの入力に基づいて、これを利用する方が適していると思われますので、私たちの開発者の一人がサーバに設定することができるかどうか見てみましょう。 – zigojacko

関連する問題