РЕШЕНИЕ:
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
return curl_exec($ch);
curl_close ($ch);
}
$html = curl('http://www.asos.com/pgeproduct.aspx?iid=1111751');
preg_match_all('/arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct\[(.*?)\] \= new Array\((.*?),\"(.*?)\",\"(.*?)\",\"(.*?)\"/is',$html,$bingo);
echo print_r($bingo);
Ссылка: http://debconf11.com/stackoverflow.php
Теперь вы по своему усмотрению:)
EDIT2:
Хорошо, мыблизки к решению ...
<script type="text/javascript">var arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct = new Array;
arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct[0] = new Array(1164,"12 months","SailingOrange","True","","59.00","0.00","£","","-59.00","0.00","0");
arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct[1] = new Array(1165,"18 months","SailingOrange","False","","59.00","0.00","£","","-59.00","0.00","0");
arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct[2] = new Array(1167,"24 months","SailingOrange","True","","59.00","0.00","£","","-59.00","0.00","0");
</script>
Он не загружается через ajax, вместо этого массив находится в переменной javascript.Вы можете разобрать это с помощью PHP, вы можете ясно видеть, что 18 месяцев - это Ложь, что означает, что она недоступна.
РЕДАКТИРОВАТЬ:
Эти размеры загружаются с помощью JavaScript, поэтому вы не можете анализировать их, так как их там нет.Я могу извлечь только это ...
<select name="drpdwnSize" id="ctl00_ContentMainPage_ctlSeparateProduct_drpdwnSize" onchange="drpdwnSizeChange(this, 'ctl00_ContentMainPage_ctlSeparateProduct', arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct);">
<option value="-1">Select Size</option>
</select>
Вы можете прослушать JS, чтобы проверить, можете ли вы загружать размеры на основе идентификатора продукта.
Сначала вам нужно: http://simplehtmldom.sourceforge.net/ Забудьте file_get_contents (), что он примерно на 5 медленнее, чем cURL.
Затем вы анализируете этот фрагмент кода (html с идентификатором ctl00_ContentMainPage_ctlSeparateProduct_drpdwnSize)
<select id="ctl00_ContentMainPage_ctlSeparateProduct_drpdwnSize" name="ctl00$ContentMainPage$ctlSeparateProduct$drpdwnSize" onchange="drpdwnSizeChange(this, 'ctl00_ContentMainPage_ctlSeparateProduct', arrSzeCol_ctl00_ContentMainPage_ctlSeparateProduct);">
<option value="-1">Select Size</option><option value="1164">12 months</option><option value="1165">18 months - Not Available</option><option value="1167">24 months</option></select>
Затем можно использовать preg_match ()explode (), str_replace () и другие, чтобы отфильтровать нужные значения.Я могу написать это, но у меня сейчас нет времени :) 1031