1

我们有一个 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());
            }

任何帮助将不胜感激。

谢谢。

4

1 回答 1

1

查看Google 排名刮刀 (php,开源)

自从它发布以来,我每天都在使用基于它的软件,据我所知,2 月份谷歌的布局没有任何变化,这破坏了任何东西。

我不确定您是否会喜欢这个答案,但原因可能是我粘贴的 Rank Scraper 使用 DOM 来解析 google 的 HTML,而您似乎依赖于正则表达式和字符串操作。
过去我个人尝试过基于这样的方法制作一个刮板,发现它需要大量的维护工作才能保持运行。有时真正丑陋的解决方法。
使用 DOM 时,小的更改通常甚至不会损坏任何东西,否则调整代码可能会更容易。
在过去的几年里,该解析器的 DOM 代码一直在正常工作,没有发生大的中断,只需要进行两次小改动。谷歌在那段时间确实在他们的网站上做了很多改变,只是没有造成不良影响。

上述链接检查器的 DOM 函数可以在 functions.php 文件中找到

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