XPath在Google App Engine for PHP上不返回结果

XPath在Google App Engine for PHP上不返回结果,php,google-app-engine,xpath,google-app-engine-php,Php,Google App Engine,Xpath,Google App Engine Php,我在Google App Engine for PHP上使用XPath时遇到问题 因此,我有以下代码: function getDataXpath($url_str, $xpath_exp_str) { $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadHTMLFile($url_str); libxml_use_internal_errors(false);

我在Google App Engine for PHP上使用XPath时遇到问题

因此,我有以下代码:

function getDataXpath($url_str, $xpath_exp_str)
{
    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTMLFile($url_str);
    libxml_use_internal_errors(false);

    $xpath = new DOMXpath($doc);
    $elements = $xpath->query("".$xpath_exp_str."");

    if (!is_null($elements)) {
        return $elements;
    }

    return false;
}
然后我简单地像这样运行它以获得节点:

getDataXpath($url_str, $xpath_exp_str);
因此,在我的本地PHP安装(v 5.5.19)中,当我运行以下程序时:

$url_str = 'http://www.alexa.com/topsites/category;0/Top/Shopping';
$xpath_exp_str = "//ul/li[@class='site-listing']/div/p/a";
$xpath_data = getDataXpath($url_str, $xpath_exp_str);
print_r($xpath_data);
DOMNodeList Object ( [length] => 0 ); 
我得到以下结果:

DOMNodeList Object ( [length] => 25 ); 
这是正确的

但是,当我在Google App Engine for PHP(v 5.5.26)上运行相同的代码时,我得到以下结果:

$url_str = 'http://www.alexa.com/topsites/category;0/Top/Shopping';
$xpath_exp_str = "//ul/li[@class='site-listing']/div/p/a";
$xpath_data = getDataXpath($url_str, $xpath_exp_str);
print_r($xpath_data);
DOMNodeList Object ( [length] => 0 ); 

有没有人遇到过这个问题,您是如何解决的?

因此,亚马逊可能正在阻止对Alexa TopSites页面的编程访问。我实际上订阅了他们的,但它不允许你像在网站上那样对回复进行分类(例如顶级电子商务网站),这就是我使用XPath的原因

我在其他一些URL上尝试了相同的脚本,但没有任何问题


无论如何,当我在本地运行它时(在浏览器和命令行中),它就可以工作了,所以我现在只需要跳过谷歌应用程序引擎。这是一个失败的工作流程,特别是因为这是一个更大的自动化工作的一部分,但现在我无法控制它。

嘿,我为谷歌云平台提供社区支持,我想让你知道,类似这样的东西将成为一篇很好的文章。只需发布一小段代码,就可以让这个问题显现出来,我们将重现它,看看我们能做些什么。嘿@Nick,谢谢你的反馈。进一步回顾,我不认为这是谷歌应用引擎的错;我只在Alexa顶级网站上遇到过这个问题,所以他们可能会阻止appspot.com域,作为整个网络刮擦预防设置的一部分。干杯