PHP DOM解析器打破页面,无法加载页面内容

问题描述:

我已经创建了一个php解析器,它必须提取span标签中的价格,但是当我回显$ html以便我可以看到页面如何加载时,它向我展示了一个没有内容的破碎页面。相反,只有页眉和页脚加载,而不是内容。内容似乎通过JavaScript在外部加载,我的问题是我如何加载Dom的HTML页面,以便JavaScript也加载?我需要让整个内容加载,以便我可以获得div和跨度。这是我的代码:PHP DOM解析器打破页面,无法加载页面内容

<?php 

require_once('simple_html_dom.php'); 

$url = 'http://oldnavy.gap.com/browse/product.do?cid=99570&vid=1&pid=714649002'; 

$dom = new domDocument('1.0', 'UTF-8'); 
$html = file_get_html($url); 

echo $html; 

if(is_object($html)){ 

    foreach ($html->find('span#priceText') as $data){ 

     $raw_price = $data->innertext; 

     echo $raw_price; 


    } 
} 
?> 
+0

而不是做它的手动使用:simplehtmldom.sourceforge.net/类 – jewelhuq

+0

,但在我的代码我已经创建一个Dom对象。或者,也许我不明白你的意思 –

+0

@jewelhuq你是什么意思,而不是手动做? –

Alt键的形式给出

链接你实际上是在寻找(他最小的表达)是这样的:http://oldnavy.gap.com/browse/productData.do?pid=714649

现在加载使用curl,把价值到unknownShopperId饼干,爆炸成一个数组,得到的价格,您需要:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, "http://oldnavy.gap.com/browse/productData.do?pid=714649"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: unknownShopperId=E853DA3B2607DDAA5F2FE13CE8D32ACF")); 

$result = curl_exec($ch); 
$explode = explode(',', $result); 

echo 'Original price: ' . $explode[92] . '<br/>' . 
'New price: ' . $explode[93] . '<br/>' . 
'Both prices: ' . $explode[13]; 

其结果将是:'$14.94'

从现在起,如果您需要另一个价格,你必须知道INTEM的pid

+0

哦,哇!谢谢!但是,您从哪里获得了Cookie的价值,这是否意味着Cookie的这一价值可能会在未来发生变化? –

+0

如果您的请求缺少AFAIK,您可以随机化该值AFAIK,该网站将尝试为您设置该值,以及301响应,这将导致“curl”的空答案。固定值似乎一直工作,我改变它随机请求,它仍然工作。 – Solrac

+0

非常感谢您的帮助!我还有一个问题,它可能很愚蠢。我没有那么多入门,但$ explode [92],92是原始价格在计算昏迷后的位置,我想知道是否有方法知道每个数据的位置,或者您必须总是尝试数字如1,2,92,93等在猜测之前呢?是否有技术? –