我需要使用for循环从网站下载结果来编译它们。
(请注意,这是一个显示包含这些参数的网页的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。我该怎么做呢?另外,如何下载/保存未找到字符串“Download”的页面?
我也认为我在文档中找到“下载”的方法不起作用。这样做的正确方法是什么?
答案 0 :(得分: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)来查找“学术”的每一个例子。
注意,在处理HTML等结构化文档时,通常不建议使用正则表达式,因为您无法利用该结构,但由于这些文档似乎包含300多个错误且不同它可能是唯一的方式。