Home >Backend Development >PHP Tutorial >淘宝用的是怎么的技术,防止被采集的?如何用php采集淘宝的数据呢?

淘宝用的是怎么的技术,防止被采集的?如何用php采集淘宝的数据呢?

WBOY
WBOYOriginal
2016-06-06 20:30:471864browse

最近做个小程序,需要采集淘宝搜索页的结果,因为API的效果不一样的,所以要采集。
但是弄了好久都没能采集下来。
有大神有空可以帮小弟试试吗?
万分感激。

链接样式: https://list.tmall.com/search_product.htm?q=%D1%A9%B7%C4%C9%C0&cli...

回复内容:

最近做个小程序,需要采集淘宝搜索页的结果,因为API的效果不一样的,所以要采集。
但是弄了好久都没能采集下来。
有大神有空可以帮小弟试试吗?
万分感激。

链接样式: https://list.tmall.com/search_product.htm?q=%D1%A9%B7%C4%C9%C0&cli...

没用什么,完全模拟浏览器curl即可。可能用了cookies和user-agent什么的识别。
效果图:
淘宝用的是怎么的技术,防止被采集的?如何用php采集淘宝的数据呢?

若无效自行将cookies换成新的。

<code><?php header("content-type:text/html;charset=gbk");
$curl = curl_init('http://list.tmall.com/search_product.htm?q=%D1%A9%B7%C4%C9%C0&click_id=%D1%A9%B7%C4%C9%C0');
$header = array();
$header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
$header[] = 'Accept-Encoding: gzip, deflate, sdch';
$header[] = 'Accept-Language: zh-CN,zh;q=0.8';
$header[] = 'Cache-Control: max-age=0';
$header[] = 'Connection: keep-alive';
$header[] = 'Cookie: uc3=nk2=0M56YNYN%2BA4%3D&id2=W8rr4uUwfV5Z&vt3=F8dAT%2B%2BMdeVt9sjBn%2Bk%3D&lg2=WqG3DMC9VAQiUQ%3D%3D; lgc=%5Cu695A%5Cu5929%5Cu5B9D%5Cu9676; tracknick=%5Cu695A%5Cu5929%5Cu5B9D%5Cu9676; t=45643498fa8ff940a0534abf468c496b; _tb_token_=5touPdVYykOo; cookie2=9cc3ace3ba141f7e0e950da7b4782eae; tt=segmentfault.com; res=scroll%3A1349*6222-client%3A1349*667-offset%3A1349*6222-screen%3A1366*768; pnm_cku822=055UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5Ockt1T3BEf0N%2BSnJPciQ%3D%7CU2xMHDJ7G2AHYg8hAS8WKQcnCVU0Uj5ZJ11zJXM%3D%7CVGhXd1llXGJYZ1NoVGldZVhlUm9NeEd9SHFFfElyR35Be0N%2FR2k%2F%7CVWldfS0TMwY8ACAcKQkncVU4XSNKGn9AZE8BUDxQCW4PIXch%7CVmhIGCUFOBgkGiMXNwwzDDMTLxEqETELMAUlGSccJwc9AjdhNw%3D%3D%7CV25Tbk5zU2xMcEl1VWtTaUlwJg%3D%3D; cq=ccp%3D1; l=AikpB1ewOIvOADHsO87Aa9qtuduD9B0s; otherx=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0; swfstore=142738; isg=4C03295B995DB1CB7ADB1CC702592A48';
$header[] = 'Connection: keep-alive';
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
// 不输出header头信息
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
// 伪装浏览器
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36');
// 保存到字符串而不是输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$rs = curl_exec($curl);
curl_close($curl);
echo $rs;
</code></code>

搜一下selenium

谢邀。

不过这个貌似我都没研究过,没什么发言权。

平时采集东西还是用Scrapy 或者 pyspider吧

淘宝不断优化反PHP采集的技术防止采集。采集淘宝的时候必须不断优化破解反PHP采集的技术达到采集目的

利用curl模拟头信息,模拟来路和IP不断的去采集,去年采集过淘宝一年数据

淘宝很多数据都已经必须要求登录后才能采集了

由于该网站的robots.txt文件存在限制指令,系统无法提供该页面的内容描述

防君子不防小人的感觉。
模拟采集的话,curl应该没太大问题,注意频率或者换IP就好了。

很多东西(比如ajax加载的)后端的程序是无法直接采集的,即使调整程序,使用起来也比较费劲。
那么,你可以模拟浏览器去访问,只要浏览器能访问到的,你模拟的浏览器都能访问得到。
PhantomJS (casperjs 框架) 看看这个吧,能简单模拟浏览器访问,要抓的数据都能抓得到。

python 下用什么工具采集taobao?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn