php web crawler上的第二个DOMDocument返回内部服务器错误500

时间:2016-05-17 20:02:37

标签: php web-crawler domdocument

我正在用PHP编写一个网络爬虫,一切顺利,直到我试图从二级页面获取信息,现在我的代码工作了几秒钟,然后返回一个内部服务器错误500.有人可以告诉我为什么?

$dom = new DOMDocument('1.0');
libxml_use_internal_errors(true);
@$dom->loadHTMLFile($curPage);
        $dom_xpath = new DOMXPath($dom);
        $aElements = $dom_xpath->query("//a[@class='js-publication-title-link ga-publication-item']");
        foreach ($aElements as $element) {
            $href = $element->getAttribute('href');
            if(0 === stripos($href,'publication/')){
                $num = $num+1;

                $publicationNum = $publicationNum+1;
                $spans = $dom_xpath->query(".//span[@class='publication-title js-publication-title']",$element);

                $publicationName = $spans->item(0)->nodeValue;
                $publicationUrl = "https://www.researchgate.net/".$href;

                //Here' where things start to go wrong
                getPublicationData($publicationUrl);

该函数接收一个url并尝试从中提取一些数据。

function getPublicationData($url){
    static $seen = array();
    if (isset($seen[$url])) {
        return;
    }
    $seen[$url] = true;

    $dom= new DOMDocument('1.0');
    libxml_use_internal_errors(true);
    $dom->loadHTMLFile($url);
    $dom_xpath = new DOMXPath($dom);

    //metodo 1
    $strongElements = $dom_xpath->query("//strong[@class='publication-meta-type']");
    foreach( $strongElements as $strongElement){
        echo $strongElement->nodeValue;
    }
} 

然后在几秒钟后工作正常(我知道它工作正常,因为代码在循环内,并且它只在几个循环后崩溃)它返回内部服务器错误500.

修改 我已经使用ini_set('display_errors', 1);并且它向我展示了任何东西:(

0 个答案:

没有答案