Php 如何解析使用无限滚动技术显示内容的网站?
我怎样才能把所有的数据都刮到那里?我正在编写一个php脚本,从一个有动态加载程序的网站上抓取数据。我正在使用HTMLDOM解析器和scoopy来抓取以下网站 . 我是初学者,我不能确定如何解析无限卷轴Php 如何解析使用无限滚动技术显示内容的网站?,php,web-scraping,infinite-scroll,Php,Web Scraping,Infinite Scroll,我怎样才能把所有的数据都刮到那里?我正在编写一个php脚本,从一个有动态加载程序的网站上抓取数据。我正在使用HTMLDOM解析器和scoopy来抓取以下网站 . 我是初学者,我不能确定如何解析无限卷轴 <input id="btnNextPage" type="button" class="btn btn-primary" style="width: 100%" value="Next page"> 这是使用ajax获取内容的链接 https://www.lyoness.com/a
<input id="btnNextPage" type="button" class="btn btn-primary" style="width: 100%" value="Next page">
这是使用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变量是您正在加载的页码。这意味着,如果仍有返回的内容,则可以遍历所有数字
您无法使用php访问此链接,因为即使通过浏览器访问此链接也是不可能的,我尝试使用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来获取所有变量并将它们保存到DB,我已经尝试了代码,它工作得很好。我希望您能接受此解决方案您需要在浏览器中调试此解决方案,以了解如何以及从何处获取无关内容。很可能它通常只是一个
$.load(“url#div”)
摘录,有时是一个独特的分页地址,甚至是JSON。@mario我如何解析您能给我一些示例或参考吗?你为什么不先用一个例子来具体化你的问题呢?我已经在网站上添加了链接我希望你能理解我的问题是的,而且很容易看到它通过Firebug或开发者工具或蜻蜓加载额外的资源。它轮询GET/au/search/loadpage?cp=0&area=2&st=&rzc=&f=&ft=Basic&………
以获取更多HTML内容。现在,URL的构造方式取决于JavaScript实现。要求这样做太宽泛了。你得自己解决这个问题。(这毕竟是你的抓取项目。)谢谢@djokage,可以通过php脚本调用ajax吗?因为我必须使用php来实现scraper。