0

我创建了一个 php 解析器,它必须在 span 标签中提取价格,但是当我回显 $html 以便我可以看到页面如何加载时,它向我显示了一个没有内容的损坏页面。相反,只有页眉和页脚加载,而不是内容。内容似乎是由 JavaScript 从外部加载的,我的问题是如何使用 Dom 加载 html 页面以便 JavaScript 也加载?我需要让整个内容加载,以便我可以获得 div 和 span。这是我的代码:

<?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;


    }
 }
?>
4

1 回答 1

0

替代方法

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

现在使用 curl 加载它,给unknownShopperIdcookie 赋值,将它分解成一个数组并得到你需要的价格:

<?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'

从现在开始,如果您需要其他价格,您必须知道中间商的pid

于 2015-09-24T14:00:58.510 回答