>  기사  >  백엔드 개발  >  想用PHP抓取某网站库存数据

想用PHP抓取某网站库存数据

WBOY
WBOY원래의
2016-06-23 13:57:361212검색

想抓取这个网站的剩余库存数量
http://www.beibei.com/detail/105272.html
使用fopen(),然后再读取的源代码中,显示的库存量为0,查了资料说需要伪装HTTP,不知道怎么弄,在线等大牛~~~


回复讨论(解决方案)

file_get_contents(); 获取源码后再用正则过滤。

版主,里面的库存量用这个方法抓取到的是- 空的·····

已解出:

<?php// 获取页面内容$content = file_get_contents('http://www.beibei.com/detail/105272.html');// 获取hxcsrfpreg_match('/g.__t__ = \"(.*)\";/U', $content, $matches);$hxcsrf = $matches[1];// 获取idpreg_match('/pageData.encryptId = \'(.*)\';/U', $content, $matches);$id = $matches[1];// post 到 api 获取sku$skuapi = 'http://www.beibei.com/item/detail/get_sku.html';$postdata  =  http_build_query (    array(         'hxcsrf' => $hxcsrf,         'id' => $id     ));$opts  = array( 'http'  =>    array(         'method'   =>  'POST' ,         'header'   =>  'Content-type: application/x-www-form-urlencoded' ,         'content'  =>  $postdata     ));$context = stream_context_create($opts);$sku = file_get_contents($skuapi, false, $context);$result = json_decode($sku, true);echo '<meta http-equiv="content-type" content="text/html;charset=utf-8">';echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '
';?>

Array
(
    [success] => 1
    [data] => Array
        (
            [sku_id_map] => Array
                (
                    [3] => Array
                        (
                            [0] => 15
                            [1] => 16
                            [2] => 19
                            [3] => 20
                            [4] => 22
                            [5] => 458
                            [6] => 459
                            [7] => 468
                        )

                )

            [sku_kv_map] => Array
                (
                    [k3] => 颜色
                    [v15] => 大号B红
                    [v16] => 大号B黑
                    [v19] => 大号B绿
                    [v20] => 大号B粉
                    [v22] => 小号绿色
                    [v458] => 小号黑色
                    [v459] => 小号粉色
                    [v468] => 小号红色
                )

            [sku_stock_map] => Array
                (
                    [v15] => Array
                        (
                            [id] => 61788
                            [stock] => 100
                            [price] => 9900
                            [origin_price] => 21800
                        )

                    [v16] => Array
                        (
                            [id] => 61789
                            [stock] => 100
                            [price] => 9900
                            [origin_price] => 21800
                        )

                    [v19] => Array
                        (
                            [id] => 61790
                            [stock] => 100
                            [price] => 9900
                            [origin_price] => 21800
                        )

                    [v20] => Array
                        (
                            [id] => 61791
                            [stock] => 100
                            [price] => 9900
                            [origin_price] => 21800
                        )

                    [v22] => Array
                        (
                            [id] => 61792
                            [stock] => 100
                            [price] => 8900
                            [origin_price] => 19800
                        )

                    [v458] => Array
                        (
                            [id] => 61793
                            [stock] => 100
                            [price] => 8900
                            [origin_price] => 19800
                        )

                    [v459] => Array
                        (
                            [id] => 61794
                            [stock] => 100
                            [price] => 8900
                            [origin_price] => 19800
                        )

                    [v468] => Array
                        (
                            [id] => 61795
                            [stock] => 100
                            [price] => 8900
                            [origin_price] => 19800
                        )

                    [v0] => 800
                )

        )

)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.