刮取基于国家的运输成本 - 动态构建

时间:2015-08-13 01:47:38

标签: php curl web-scraping scrape

我一直在努力争取产品价格和运费 在aliexpress.com上

价格设定并固定,因此 - 容易... 但是,在网站确定后加载运费 你是哪个国家的。

我查看了源代码,它有一个隐藏的输入字段,在检查我的位置或IP后填充(可能)。

我如何使用CURL“愚弄”网站并将运费降到我的国家 - 也就是用PHP抓它?

我得到的CURL:

    $html   = curl_download($producturl, $browserAgent);
    $dom    = new DOMDocument();
    $dom->validateOnParse = true;
    @$dom->loadHTML($html);
    $xpath  = new DOMXPath($dom);
    libxml_clear_errors();

    // get and clean product price
    $price      = $dom->getElementById('product-price');
    $price      = $price->nodeValue;            
    $clnprice   = currency_string_remover($price);
    $clnprice   = explode(' ', $clnprice);
    $clnprice   = array_filter(array_map('trim',$clnprice),'strlen');
    $clnprice   = array_values($clnprice)[0];
    $currency   = currency_string_extractor($price);


    // get and clean shipping price

    // >> this is empty until page determines location! PROBLEM
    $shipprice  = $dom->getElementById('shipping-cost');
    $shipprice  = $shipprice->nodeValue;


    echo '<pre>SPRICE';
    print_r($shipprice);
    echo '</pre>';

    $shipprice  = explode('-', $shipprice);
    $shipprice  = $shipprice[0];
    $shipprice  = currency_string_remover($shipprice);


    echo '<div id="sitename">aliexpress</div>';
    echo '<div id="price">'.$clnprice.'</div>';
    echo '<div id="shipprice">'.$shipprice.'</div>';
    echo '<div id="currency">'.$currency.'</div>';

有没有人有任何想法?指针?帮助链接?

1 个答案:

答案 0 :(得分:0)

我已经检查了网站。它适用于多种语言和国家。对于产品页面上的俄罗斯(我的情况),主要价格包括运费。所以这个dom html项目仍为空:<span id="shipping-cost"></span> 顺便说一句,它不是一种形式(在我的情况下)。

如果您怀疑它的ajax(javascript)已填充,则最好检查shipping-cost关键字的所有js文件。我已经使用 Chrome开发工具完成了它,在我的情况下,我发现在任何js文件(包括源html文件)中都没有出现它。所以很可能它不是javascript(ajax)更新,而是此字段最初是在服务器上生成的,而可能是空的

您的浏览器会从某个国家/地区监视该站点,并且您运行php代码的服务器(curl scraper)会从完全不同的国家/地区(IP)执行此操作。因此,Aliexpress将以不同的页面内容进行响应。因此,我建议您使用免费代理服务hola.org通过代理进行调试来更改/轮换国家/地区(IP)。因此,您可以使用不同的基于国​​家/地区的IP检查此站点以查看此字段。

您可能需要查看其他字段( product-info-shipping )以查看送货条件。 http://joxi.ru/xAe8Wy1hGDgq2y

如果您真的想要请求在某个国家(IP)填充shipping-cost的网页,那么您需要使用代理服务来代理您的卷曲请求。