我抓取一个页面,然后将其转换为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);
这段代码有什么问题?
答案 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);
?>
我认为这不是一个完整的答案,但对于评论来说有点多;所以带着一粒盐和健康的怀疑。我希望它激发了一些想法。