如何解析使用无限滚动技术显示内容的网站?
how to Parse a website that is using infinite scroll technique to display content?
我怎样才能抓取那里的所有数据?我正在编写一个 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">
这是 link 用于使用 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 访问此 link 因为即使通过浏览器访问它也是不可能的,我尝试使用 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);
}
})
您可以 post 使用 jquery 将返回的数据抓取到您的服务器后 post (这在使用 php 库时非常容易)或使用某种方式获取请求并保存到数据库 API 或禁用浏览器的跨域安全选项。
编辑:
这里是 php 使用 CURL
检索第一页的代码
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,我已经尝试了代码并且它工作正常。我希望你能接受这个解决方案
我怎样才能抓取那里的所有数据?我正在编写一个 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">
这是 link 用于使用 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 访问此 link 因为即使通过浏览器访问它也是不可能的,我尝试使用 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);
}
})
您可以 post 使用 jquery 将返回的数据抓取到您的服务器后 post (这在使用 php 库时非常容易)或使用某种方式获取请求并保存到数据库 API 或禁用浏览器的跨域安全选项。
编辑:
这里是 php 使用 CURL
检索第一页的代码 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,我已经尝试了代码并且它工作正常。我希望你能接受这个解决方案