繁体   English   中英

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

[英]XPath not returning results on Google App Engine for PHP

我在用于PHP的Google App Engine上使用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] => 25 ); 

这是正确的。

但是,当我在适用于PHP的Google App Engine(v 5.5.26)上运行相同的代码时,得到以下信息:

DOMNodeList Object ( [length] => 0 ); 

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

因此看来,亚马逊可能正在阻止对Alexa TopSites页面的编程访问。 我实际上已经订阅了他们的新API ,但是它不允许您像在网站上一样对响应(例如顶级电子商务网站)进行分类,这就是为什么我采用XPath的原因。

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

无论如何,当我在本地(在浏览器和命令行中)运行它时,它就可以工作,因此我现在只需要跳过Google App Engine。 这是一个残破的工作流程,特别是因为这是更大的自动化工作的一部分,但是在这一点上我还是无法控制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM