根据国家/地区削减运费 - 动态构建

问题描述 投票:0回答:1

我一直在努力抢产品价格和运费 在速卖通网站上

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

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

我如何使用 CURL 来“欺骗”网站并获取到我的国家/地区的运费 - 也就是使用 PHP 抓取它?

我得到的卷曲:

    $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>';

有人有什么想法吗?指针?帮助链接?

php web-scraping curl
1个回答
0
投票

我检查过该网站。它适用于多种语言和国家。对于俄罗斯(我的情况)在产品页面,主要价格包括运费。所以这个 dom html 项目仍然是空的:

<span id="shipping-cost"></span>
顺便说一句,它不是一种形式(就我而言)。

如果您怀疑它是由 ajax (javascript) 填充的,您最好检查所有 js 文件中是否有

shipping-cost
关键字。我已经使用 Chrome dev-tools 完成了此操作,就我而言,我发现它没有出现在任何 js 文件(包括源 html 文件)中。因此,很可能它不是 javascript (ajax) 更新,而是该字段最初是在服务器上生成的,并且可能会被提供为空

您的浏览器会监视来自某个国家/地区的网站,而您运行 php 代码(curl scraper)的服务器会从完全不同的国家/地区(IP)进行监视。因此速卖通将响应不同的页面内容。因此,我推荐您使用免费的代理服务 hola.org,通过代理更改/轮换国家/地区 (IP) 进行调试。因此,您可以使用不同国家/地区的 IP 检查此站点以查看此字段。

您可能需要检查其他字段(产品信息-运输)以查看运输条件。 http://joxi.ru/xAe8Wy1hGDgq2y

如果您确实想请求在某些国家(IP)中填充了

shipping-cost
的网页,那么您需要使用代理服务来代理您的curl请求。

© www.soinside.com 2019 - 2024. All rights reserved.