我一直在努力抢产品价格和运费 在速卖通网站上
价格已设定并固定,因此 - 很容易... 但运费是在网站确定后加载的 你来自哪个国家。
我查看了源代码,它有一个隐藏的输入字段,(可能)在检查我的位置或 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>';
有人有什么想法吗?指针?帮助链接?
我检查过该网站。它适用于多种语言和国家。对于俄罗斯(我的情况)在产品页面,主要价格包括运费。所以这个 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请求。