maxy666
7.11.2013 - 07:12
Доброе время суток. Пишу не сложный парсер товаров с aliexpress.com, но не получается спарсить стоимость доставки на сайте. Стоимость доставки выводиться на сайте, как я понял через javascicript.
При обычной загрузке страницы:
$content = file_get_contents ($from);
echo $content;
Поле доставка отображается только в браузере, так же при попытке “проинспектировать элемент”:
http://s017.radikal.ru/i425/1311/8a/adb76b586f1e.jpg а исходном коде html такого информации нету (тег <span id="shipping-cost"></span> отображается пустым):
http://i016.radikal.ru/1311/d0/36d3d37517c9.jpgПробовал загрузить страницу с помощью curl, но такая же ситуация.
Пожалуйста помогите. Или скажите как парсить такие значения(выводимые, вроде как я понял с помощью javascript).
Игорь_Vasinsky
7.11.2013 - 07:13
Цитата |
Доброе время суток. Пишу не сложный парсер товаров с aliexpress.com, но не получается спарсить стоимость доставки на сайте. Стоимость доставки выводиться на сайте, как я понял через javascicript. При обычной загрузке страницы:$content = file_get_contents ($from);echo $content;Поле доставка отображается только в браузере, так же при попытке “проинспектировать элемент”: а исходном коде html такого информации нету (тег <span id="shipping-cost"></span> отображается пустым):Пробовал загрузить страницу с помощью curl, но такая же ситуация.Пожалуйста помогите. Или скажите как парсить такие значения(выводимые, вроде как я понял с помощью javascript). Доброе время суток. Пишу не сложный парсер товаров с aliexpress.com, но не получается спарсить стоимость доставки на сайте. Стоимость доставки выводиться на сайте, как я понял через javascicript. При обычной загрузке страницы:$content = file_get_contents ($from);echo $content;Поле доставка отображается только в браузере, так же при попытке “проинспектировать элемент”: а исходном коде html такого информации нету (тег <span id="shipping-cost"></span> отображается пустым):Пробовал загрузить страницу с помощью curl, но такая же ситуация.Пожалуйста помогите. Или скажите как парсить такие значения(выводимые, вроде как я понял с помощью javascript). Доброе время суток. Пишу не сложный парсер товаров с aliexpress.com, но не получается спарсить стоимость доставки на сайте. Стоимость доставки выводиться на сайте, как я понял через javascicript. При обычной загрузке страницы: $content = file_get_contents ($from);echo $content; Поле доставка отображается только в браузере, так же при попытке “проинспектировать элемент”:
 а исходном коде html такого информации нету (тег <span id="shipping-cost"></span> отображается пустым):
 Пробовал загрузить страницу с помощью curl, но такая же ситуация. Пожалуйста помогите. Или скажите как парсить такие значения(выводимые, вроде как я понял с помощью javascript).
|
это чё было? нервы?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maxy666
7.11.2013 - 07:15
извините пробовал расширенный редактор, все подправил.
Пожалуйста посмотрите мою проблему.
для получения стоимости и т.д. делается запрос вида
http://freight.aliexpress.com/ajaxFreightC..._=1383794350128 . Очень удачно, что это не авторизованный jsonp

Просто подставляешь интересующий productid и получаешь данные в формате json (обернутых в вызов функции (jsonp ведь)))
Игорь_Vasinsky
7.11.2013 - 07:33
вот тебе и парсер)
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maxy666Сдается мне, что для того чтоб отобразить элемент пришедший айксом нужно при запросе исходного кода отправлять также активацию этого элемента, то что вызывает этот аякс запрос. А просто исходный код страницы это тоже самое что еще раз открыть страницу только в виде HTML:
$content = htmlspecialchars(file_get_contents ($from));
Только предполагаю, как сделать:
1. Подделать AJAX запрос для елемента $old
2. Отправить его на сервер
3. Поймать ответ $new
4. Сделать str_replace($old,$new,$content);
Пока писал kaww уже все написал. Но все же вдруг мысль будет интересной.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
maxy666
7.11.2013 - 07:40
Спасибо, даже не знал что так можно. Только у меня пока не получается(
Пожалуйста посмотрите например по товару:
http://www.aliexpress.com/item/leopard-hea.../902836144.htmlid будет 902836144 ?
надо подставить вместо
http://freight.aliexpress.com/ajaxFreightC...&f=d&productid=695720101&userType=cnfm&country=RU&count=4¤cyCode=USD&_=1383794350128
Подставляю id товара
http://freight.aliexpress.com/ajaxFreightC...&f=d&productid=902836144&userType=cnfm&country=RU&count=4¤cyCode=USD&_=1383794350128
В результате получаю:
"
jQuery18307296085192356259_1383794331837({"freight":[{"commitDay":27,"company":"E MS","companyDisplayName":"EMS","currency":"USD","di scount":40,"discountType":"about","domesticFreight":"","errorCode& quot;:1,"isDefault":true,"localCurrency":"USD","localPrice":& quot;83.84","localPriceFormatStr":"US $83.84","localSaveMoney":"55.90","localSaveMoneyFormatStr":"US $55.90","localTotalFreight":"139.74","localTotalFreightFormatStr":" US $139.74","price":"83.84","processingTime":5,"saveMoney" ;:"55.90","status":"","time":"10-20","totalFreight":"139.74"}]})"
но почему то цена доставки СhinaPost выводиться не та(или не по тому товару), возможно еще что то надо менять. в строке?
maxy666, ну так ведь там есть еще count - количество товара, country - код страны и userType -вот это хз что такое, придется тебе самому разобраться )
З.Ы. если не передавать имя функции (callback), то в ответе будет json обернутый в скобки, который можно разобрать, например, так
var_dump(json_decode(rtrim(ltrim($responseString,'('),')')));
maxy666
7.11.2013 - 07:57
точно спасибо, что то на не досмотрел. Буду пробовать.
Спасибо вам всем за советы, особенно: kaww и ABC за идеи, вы меня очень выручили.
А то честно говоря не знал с чего подступиться)).
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.