1

検索エンジンの結果ページをスクレイプし、クライアントのWebサイトの位置をドメインの特注のレポートスイートに出力するPHPスクリプトがあります。

Googleは2月の第1週に何かを変更したため、スクリプトでページ上のドメインを検出できませんでした。現在、元の開発者をオフィスに配置しておらず、他のスタッフもこれを解決できません。

私は問題がスクリプトのどこにあるかを知っていると確信しています。私は開発者ではないので、各行が実際に何をしているのかわからないだけです。スクリプトは、検索結果の関連するクラスを使用して、探しているものが実際にどこにあるかを判断します。

スクリプト自体は引き続き実行され、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());
            }

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

Google ランク スクレーパーをチェックしてください (php、オープンソース)

リリースされて以来、私はそれに基づいたソフトウェアを毎日使用しており、2月にGoogleのレイアウトに変更がなく、私が知る限り何も壊れていません.

答えが気に入るかどうかはわかりませんが、貼り付けたランクスクレイパーは DOM を使用して Google の HTML を解析している可能性がありますが、正規表現と文字列操作に依存しているようです。
私は過去にそのような方法に基づいてスクレーパーを作成しようとしましたが、それを実行し続けるには多くのメンテナンス作業が必要であることがわかりました. 時々本当に醜い回避策。
DOM を使用する場合、小さな変更は通常、何も損傷することさえありません。
過去数年間、そのパーサーの DOM コードは大きな中断なく動作しており、小さな変更が必要になったのは 2 回だけでした。その間、Google はサイトに多くの変更を加えましたが、悪影響はありませんでした。

上記のリンクされたチェッカーの DOM 関数は、functions.php ファイルにあります。

function process_raw($htmdata,$page)
于 2012-03-12T10:14:43.123 に答える