这是我目前使用的代码:
$urlIn1 = "http://www.sportsdirect.com/slazenger-mens-canvas-shoes-246033?colcode=24603325";
libxml_use_internal_errors(true);
$docIn1 = new DOMDocument();
$docIn1->loadHTMLFile($urlIn1);
$docIn1->preserveWhiteSpace = false;
$docIn1->formatOutput = true;
$xpathIn1 = new DOMXpath($docIn1);
$Price = $xpathIn1->query('//span[@id="dnn_ctr103511_ViewTemplate_ctl00_ctl07_ctl01_lblSellingPrice"]')->item(0)->nodeValue;
echo $Price;
使用此代码我echo
的价格。
我的问题是:
如何从ID为dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl
的选择菜单中的选项中获取所有值,其中不具有class='greyOut'
。
从选择菜单中的选项中获取所有值后,我必须将它们格式化为一行,如下所示。
预期的最终结果:
7 (41), 7.5 (41.5), 8 (42), 8.5 (42.5), 9 (43), 9.5 (43.5), 10 (44), 11 (45), 12 (46)
答案 0 :(得分:0)
我认为您可以使用此xpath表达式从ID为dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl
的选择菜单中获取所需选项:
//选择[@id =" dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl"] /选项[否(含有(@class, " greyOut"))而不是(包含(@selected,"选择"))]
然后,您可以循环DOMXPath::query的结果并创建一个包含所有价格的数组,并使用implode创建一行演示文稿。
例如:
$urlIn1 = "http://www.sportsdirect.com/slazenger-mens-canvas-shoes-246033?colcode=24603325";
libxml_use_internal_errors(true);
$docIn1 = new DOMDocument();
$docIn1->loadHTMLFile($urlIn1);
$docIn1->preserveWhiteSpace = false;
$docIn1->formatOutput = true;
$xpathIn1 = new DOMXpath($docIn1);
$domNodeList = $xpathIn1->query('//select[@id="dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl"]/option[not(contains(@class, "greyOut")) and not(contains(@selected, "selected"))]');
$prices = array();
foreach ($domNodeList as $domElement) {
$prices[] = $domElement->nodeValue;
}
echo implode(', ', $prices);