0

我正在抓取一个页面,然后将其转换为 xml 格式,我使用的函数如下

public function getXML($url){
   $ch = curl_init();
   //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
   //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_URL,$url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $response = curl_exec($ch);      
   $xml = simplexml_load_string($response);
   return $xml;
}

print_r($curl->getXML("http://www.amazon.co.uk/gp/offer-listing/0292783760/ref=tmm_pap_new_olp_sr?ie=UTF8&condition=used"));

尝试不同的 url 后没有返回任何内容,页面加载正常,所以问题出在行$xml = simplexml_load_string($response);

这段代码可能有什么问题?

4

1 回答 1

1

不完全了解您在做什么,看起来您正在尝试抓取亚马逊网页?如果我在浏览器中提取该 URL,它不会在标题或文档本身中列为 XHTML——我怀疑它不是。我不认为 simplexml 可以处理这个问题。

(CURL 会为您转换为 XML 吗?我不这么认为,但我不是所有 CURL 的大师。如果是这样,可能是 CURL 的输出与 simplxml 之间的不兼容 - 这是相当有限的 - - 将接受)。

您可以尝试使用 DOMDocument,尽管我的 PHP 可能有点过时——这些天可能有更好的实用程序。

一个快速的谷歌搜索带来了这个教程

<?php
  $doc = new DOMDocument();
  $doc->strictErrorChecking = FALSE;
  $doc->loadHTML($html);
  $xml = simplexml_import_dom($doc);
?>

我认为这不是一个完整的答案,但评论有点多;所以带着一粒盐和一份健康的怀疑来对待它。我希望它能激发一些想法。

于 2012-10-17T21:11:33.440 回答