我如何抓取那里的所有数据?我正在编写一个php脚本来从具有动态加载器的网站中获取数据。我正在使用HTML Dom解析器和scoopy来抓取以下网站 https://www.lyoness.com/au/search/partner/。 我是初学者,我无法确定如何解析无限卷轴。
<input id="btnNextPage" type="button" class="btn btn-primary" style="width: 100%" value="Next page">
答案 0 :(得分:1)
这是用于使用ajax
提取内容的链接https://www.lyoness.com/au/search/loadpage?cp=1&area=2&st=&rz=&rzc=&f=&ft=Basic&c=AU&r=12&la=en-AU&s=Default&isPreviousPageClick=false&_=
cp变量是您要加载的页码。这意味着如果仍有内容返回,您可以遍历所有数字。
你无法通过浏览器访问此链接,因为即使通过浏览器访问此链接也是不可能的,我尝试使用ajax并且它可以工作,这里是你可以在页面控制台中键入的ajax代码并更改cp它将打印ajax内容,你可以添加一个有一些延迟的循环
$.ajax({
url:'https://www.lyoness.com/au/search/loadpage?cp=5&area=2&st=&rz=&rzc=&f=&ft=Basic&c=AU&r=12&la=en-AU&s=Default&isPreviousPageClick=false&_=',
success:function(data){
console.log(data);
}
})
您可以使用jquery(使用php库非常容易)使用post或get请求将您的返回数据发送到服务器并使用某种API保存到数据库或禁用跨域安全性浏览器中的选项。
编辑:
这是一个使用CURL检索第一页的PHP代码
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
$url = 'https://www.lyoness.com/au/search/loadpage?cp=1&ft=Basic&c=AU&r=12&la=en-AU&s=Default';
$ch = curl_init();
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla-Djokage/1.0");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Requested-With: XMLHttpRequest'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
echo $output;
//echo 'Curl error: ' . curl_error($ch);
curl_close($ch);
你需要循环遍历url中的cp变量来解析所有页面,你还需要抓取$ output html来获取所有变量并将它们保存到数据库中,我已经尝试了代码并且它可以工作精细。我希望你会接受这个解决方案