2013-03-29 72 views
0

我需要使用for循环来下载网站结果进行编译。简单的PHP脚本下载结果

(请注意,这是其中显示网页与这些参数ASP请求)

我写了下面的代码,让我这样的:

<?php 
for ($i=10; $i<500; $i++) { 
$m = $i*10; 

$dl = $query; 
$text = file_get_contents($dl); 
$doc = new DOMDocument('1.0'); 
$doc->loadHTML($text); 
$aObj = $doc->find('Academic'); 
if (count($aObj) > 0) 
{ 
    echo "<h4>Found</h4>"; 
    //Don't download this 
} 
else 
{ 
    echo "<h4>Not found</h4>"; 
    //Download this 
} 
} 
?> 

但它返回的几个误区。显然它不能将ASPX文件复制到HTML DOM。我如何去做这件事?另外,如何下载/保存未找到字符串“下载”的页面?

我也认为我在文档中查找“下载”的方法不起作用。什么是正确的方法来做到这一点?

+4

老兄,你是认真的吗?你提供一个暴露真实学生敏感信息的示例链接? – CodeZombie

+0

好吧,它确实不是那么敏感,只是一些公开可用的归档结果。 – 17andLearning

+0

有什么错误? – woz

回答

0

您试图解析的网站包含很多错误,因此您将无法使用标准的DOMDocument对象。您可以尝试使用SimpleHTMLDOM(http://simplehtmldom.sourceforge.net/)或phpQuery(https://code.google.com/p/phpquery/)等库,并希望这些库足以解析格式错误的文档。

如果您只需要一些信息,例如使用正则表达式和preg_match_all(http://www.php.net/manual/en/function.preg-match-all.php)就可以更容易地找到每个出现的“Academic”。

注意,通常在处理结构化文档(如HTML)时使用正则表达式不是非常明智的做法,因为您无法利用该结构,但由于这些文档似乎包含300多个错误,并且与彼此可能是唯一的方法。