【发布时间】:2018-02-23 11:36:51
【问题描述】:
我已经开始为一个也有爬虫的网站编写爬虫,因为我需要浏览一些链接,但我收到了这个错误:
PHP 致命错误:未捕获错误:调用成员函数 find() on D:\Projekti\hemrank\simple_html_dom.php:1129 中的 null 堆栈跟踪:
0 D:\Projekti\hemrank\scrapeit.php(37): simple_html_dom->find('ul')
1 D:\Projekti\hemrank\scrapeit.php(19): ScrapeIt->getAllAddresses()
2 D:\Projekti\hemrank\scrapeit.php(55): ScrapeIt->run()
3 {main} 在 D:\Projekti\hemrank\simple_html_dom.php 第 1129 行抛出
当我对 $html 变量进行 var_dump 时,我得到了包含所有标签等的完整 html,这就是为什么它说“在 null 上调用成员函数 find()”对我来说很奇怪,而实际上在$html。这是不工作的代码部分:
$html = new simple_html_dom();
$html->load_file($baseurl);
if(empty($html)){echo "HTTP Response not received!<br/>\n";exit;}
$links = array();
foreach ($html->find('ul') as $ul) {
if(!empty($ul) && (count($ul)>0))
foreach ($ul->find('li') as $li) {
if(!empty($li) && (count($li)>0))
foreach ($li->find('a') as $a) {
$links[] = $a->href;
}
else
die("NOT AVAILABLE");
}
}
return $links;
}
这是 PHP 简单 HTML DOM 解析器的常见问题,有解决方案还是应该切换到其他类型的抓取?
【问题讨论】:
-
PHP 不提供
simple_html_dom类。 -
我觉得应该只是
$html = file_get_html($baseurl); -
看到这个link
-
@axiac 不,它没有,你下载它并将它包含在你要使用它的文件中..
-
@teeyo 那就是我要问的一个问题......整个标题都说 PHP 简单 HTML DOM 错误