Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解析使用无限滚动技术显示内容的网站?_Php_Web Scraping_Infinite Scroll - Fatal编程技术网

Php 如何解析使用无限滚动技术显示内容的网站?

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

我怎样才能把所有的数据都刮到那里?我正在编写一个php脚本,从一个有动态加载程序的网站上抓取数据。我正在使用HTMLDOM解析器和scoopy来抓取以下网站 . 我是初学者,我不能确定如何解析无限卷轴

<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。