首页 >后端开发 >php教程 >淘宝用的是怎么的技术,防止被采集的?如何用php采集淘宝的数据呢?

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

WBOY
WBOY原创
2016-06-06 20:30:471860浏览

最近做个小程序,需要采集淘宝搜索页的结果,因为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?

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn