【问题标题】:PHP/DOMDocument/Xpath - Failed to load DOM element from specific linksPHP/DOMDocument/Xpath - 无法从特定链接加载 DOM 元素
【发布时间】:2016-03-09 17:53:25
【问题描述】:

这是我的代码:

<?php
    $url = "http://www.sportsdirect.com/adidas-goletto-mens-astro-turf-trainers-263244?colcode=26324408";   
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument();
    $doc->loadHTMLFile($url);

    $xpath = new DOMXpath($doc);

    $name  = $xpath->query('//span[@id="ProductName"]')->item(0)->nodeValue;

    echo $name;

?>  

使用此代码我没有问题。我能够解析链接并获取产品名称。当我尝试解析其他链接时,问题就来了。如果我尝试解析:http://www.sportsdirect.com/playboy-100ml-eau-de-toilette--754217?colcode=75421790

我收到此错误:

Warning: DOMDocument::loadHTMLFile(http://www.sportsdirect.com/playboy-100ml-eau-de-toilette--754217?colcode=75421790): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /public_html/test.php on line 5

我收到此错误是因为当我尝试解析此链接时,我正在解析的网站正在检查我的浏览器 cookie,如果我没有将名称 ChosenSite 设置为 www 的 cookie,它会立即将我重定向到解析来自 http://bg.sportsdirect.com/playboy-100ml-eau-de-toilette--754217?colcode=75421790 的数据无法提供此数据,从那里我得到了没有得到名称的问题。

所以我的问题是:

如何设置 cookie 或使用其他方法解析此链接?

提前致谢!

【问题讨论】:

    标签: php cookies xpath domdocument


    【解决方案1】:

    要么使用cURL,然后再分析您的数据(即从 curl 响应中加载数据)
    或者 - 如果您愿意在学习另一种编程语言(即 Python)时花费一些精力 - 请查看 Scrapy,它具有用于与一般抓取相关的许多任务的内置功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2014-08-19
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多