网站页面内部分内容是 Ajax 获取赋值的如何抓取

想要抓取网站的产品信息,如图

页面部分内容是他网站js赋值的,如何抓取

产品图片地址

页面部分内容是他网站js赋值的,如何抓取
产品参数介绍

用guzzle抓取页面的html信息后发现,对应的位置只有 <div id='jqlist'></div><div id='attributes'></div> 空内容的标签。

他这个是用过ajax去取数据,然后通过 $("#jqlist").html(data); 进行赋值的

我尝试通过他页面对应的链接直接去获取 图集的数据和详情的数据,发现获取到的是 空的数据。

但是抓取的数据中,只有很少很少的页面会获取到对应的图片和详情,请问如何破?

我是用 Guzzle 和 file_get_contents 抓取,然后用 HtmlDomParser 进行分析的

附代码

 $page_id = $request['id'] ?:1;
$html = HtmlDomParser::str_get_html( file_get_contents($this->url.$page_id) );//列表页

$caiji_number = 0;//新增采集数
foreach($html->find('ul.pro') as $key => $info)
{
    $thumb = $info->find('a img',0)->src;//获得产品列表图
    //根据产品详情链接采集对应详情信息
    $detail = HtmlDomParser::str_get_html( file_get_contents($info->find('a',0)->href) );
    //产品详情
    $product_description = $detail->find('div#attributes',0)->plaintext;
    //图集
    $pics = $detail->find('div#jqlist li');
    $get_pics = [];
    foreach ($pics as $pic) {
        if($pic->find('img',0)->src){
            $get_pics[] = $pic->find('img',0)->src;
        }
    }
    $pic = implode(',',$get_pics);

    //以下是存数据库的代码

}

一个奋斗者
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 6

我更喜欢抓这种,正则都不需要了。

f12 看他包,请求他接口。

3年前 评论
未进化的类人猿 3年前
songbai (楼主) 3年前
未进化的类人猿

可能需要cookie

3年前 评论

queryList试一下。

3年前 评论
songbai (楼主) 3年前
panda-sir

:smirk:需要cookie我一般都模拟登陆 除非拼图之类的反人类的验证码了 我就放弃 手动录入cookie或者采用其他方式了 一般的字母数字验证码 随便找个接口就能识别了

3年前 评论

puppeteer ? 或者抓接口

3年前 评论
songbai (楼主) 3年前

去试一下就知道了。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!