我正在用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);
并且它向我展示了任何东西:(