无法从myntra中抓取内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从myntra中抓取内容相关的知识,希望对你有一定的参考价值。

试图用下面给出的代码从myntra中删除内容,相同的代码对于snapdeal工作正常,任何人都可以帮助我在哪里我坚持?

$url = 'www.myntra.com/tshirts/roadster/roadster-men-black-striped-polo-collar-t-shirt/1353945/buy?src=search&uq=false&q=men-tshirts&p=1';
         $request_headers = '[
                "Accept: text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
                "Accept-Encoding: gzip, deflate",
                "Connection: keep-alive",
                "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
                "Cache-Control: max-age=0",
                "Content-Type: text/html; charset=UTF-8",
            ]';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_AUTOREFERER, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100508 SeaMonkey/2.0.4');
        //curl_setopt($ch, CURLOPT_MAXREDIRS, 50);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FAILONERROR, true); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);

        $cl  = curl_exec($ch);
        //print_r($cl);
        if($cl === false){

             echo 'Curl error: '.curl_errno($ch). '-' . curl_error($ch);

        }else{
             $dom = new DOMDocument();

             $dom->loadHTML($cl);

             $xpath = new DOMXpath($dom);

             $pName = $xpath->query('//h1[@class="pdp-title"]/text()'); //pdp-title  pdp-e-i-head

             $pro   = $pName->item(0)->nodeValue;

             echo $pro;
             //var_dump($pName);
        }

在做curl时它会给出错误“Curl error:47-Maximum(20)redirects follow”,因为我是新手,基本上没有得到下一步做什么...

删除if else条件它显示dom节点对象:值省略,

没有任何线索,这个问题的实际原因是什么。

我在命令提示符下运行curl它正确地显示页面,但是通过浏览器它不断给出错误:“卷曲错误:47-最大(20)重定向跟随”..

提前谢谢,等待建议......

答案

有两种选择:

  1. 在网页上呈现JS内容。您可以使用PhantomJS进行渲染。查看本教程http://shout.setfive.com/2015/03/30/7817/
  2. 直接解析json文件: http://www.myntra.com/web/style/similar/Roadster-Men%20Black%20Striped%20Polo%20Collar%20T-shirt/1353945
另一答案

使用nodejs可以轻松完成Scraping Myntra。你可以使用cheerio加载和注入jquery并访问你想要的所有元素并抓取它们,你也可以使用fast-csv或其他一些npm库来以你想要的格式导出数据。这种方法比phantom.js更快

这是一篇关于scotch.io的精彩文章,可以帮助您入门

https://scotch.io/tutorials/scraping-the-web-with-node-js

以上是关于无法从myntra中抓取内容的主要内容,如果未能解决你的问题,请参考以下文章

无法从 onListItemClick 开始片段

无法抓取动态内容(带有启动设置的抓取)

使用 python 抓取谷歌精选片段

如何在 NodeWebkit 的 html 代码中访问节点模块中的抓取数据

无法从网页上抓取类别标题

从 LinkedIn 网络抓取公司详细信息 --- 无法在内部获取正文标签