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

 zJv老方有点坑爹额B 发布于 2022-11-21 09:10

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

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

8 个回答
  • python 下用什么工具采集taobao?

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

    2022-11-21 09:40 回答
  • 由于该网站的robots.txt文件存在限制指令,系统无法提供该页面的内容描述

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

    2022-11-21 09:40 回答
  • 利用curl模拟头信息,模拟来路和IP不断的去采集,去年采集过淘宝一年数据

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

    2022-11-21 09:40 回答
  • 淘宝不断优化反PHP采集的技术防止采集。采集淘宝的时候必须不断优化破解反PHP采集的技术达到采集目的

    2022-11-21 09:40 回答
  • 谢邀。

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

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

    2022-11-21 09:40 回答
  • 搜一下selenium

    2022-11-21 09:40 回答
  • 没用什么,完全模拟浏览器curl即可。可能用了cookies和user-agent什么的识别。
    效果图:

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

    <?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;
    
    2022-11-21 09:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有