页面未转换为xml格式

时间:2012-10-17 20:52:01

标签: php xml curl

我抓取一个页面,然后将其转换为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"));

在尝试不同的网址后,没有返回任何内容,页面加载正常,因此问题在于行$xml = simplexml_load_string($response);

这段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

不明白你究竟在做什么,看起来你正试图刮掉亚马逊网页?如果我在浏览器中提取该URL,则它不会在标题或文档本身中列为XHTML - 我怀疑它不是。我不认为simplexml可以解决这个问题。

(CURL是否为你做了转换为XML?我不这么认为,但我不是所有CURL的主人。如果是这样的话,它可能是CURL的输出与simplexml之间不相容的 - 这是相当有限 - 将接受。)

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

A quick googling brought up this tutorial

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

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