抓取网站以查找唯一标识符

时间:2014-01-14 21:22:07

标签: php

我的公司一直向客户发放徽章(带有链接的图像),以便放在他们的网站上。问题是,我们向许多人分发了验证所有客户是否真正将它们放在网站上的方法。每个徽章都有唯一的标识符。无论如何通过foreach循环(我已经设置)抓取每个网站并在每个网站上查找唯一标识符?

这是我们发放的徽章的一个例子:

<a style="background:none;" href="javascript:void(window.open('http://livecompliance.com/_badge/badge?d_enc=1f7482917ce3114aafcde4e1f9b6418b','_newwindow', 'toolbar=no,location=yes,status=yes,directories=yes,menubar=yes,scrolling=no,scrollbars=no,width=550,height=330,resize=no'))"><img src="http://www.livecompliance.com/_badge/LC-CE.png" style="margin-right:50px;"></a><br /><a style="color:#333;font-size:11px;font-family:verdana;" href="https://www.livecompliance.com/">www.LiveCompliance.com</a>

1 个答案:

答案 0 :(得分:0)

起初:你说他们中有很多人。虽然“很多”在这里处理起来并不是一个好处,但在谈论超过100时,这实际上表明不是在for循环中这样做。

您很容易达到执行限制!更好的解决方案:在文件或数据库中创建一个队列,删除脚本已经检查过的队列。

现在到了这一点:是的,这是可能的。可能最巧妙的解决方案是使用CUrl(http://de3.php.net/curl)。我不会深入CUrl并在这里向您展示替代解决方案(尽管我建议与CUrl合作)

$url = 'http://site-to-check.com';
$fetch_html = file_get_contents($url); //better use CUrl ;)
$regexp = '/WHATEVER_PATTERN_FITS_YOUR_NEEDS/i';

if (preg_match($fetch_html,$regexp)) {
    //YES, this site has it
}

这就是你要求的吗?