网站页面内部分内容是 Ajax 获取赋值的如何抓取
想要抓取网站的产品信息,如图
产品图片地址
产品参数介绍
用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);
//以下是存数据库的代码
}
我更喜欢抓这种,正则都不需要了。
f12
看他包,请求他接口。可能需要cookie
queryList试一下。
:smirk:需要
cookie
我一般都模拟登陆 除非拼图之类的反人类的验证码了 我就放弃 手动录入cookie
或者采用其他方式了 一般的字母数字验证码 随便找个接口就能识别了用
puppeteer
? 或者抓接口去试一下就知道了。