简单HTMLDOM:Cannot抓取蚂蚁分页
Simple HTML DOM:Cannot fetch ant pagination
我正在尝试抓取网站以根据提供的关键字估算产品数量。要完成此任务而不是滚动浏览每个页面并手动计算产品数量,我要做的就是找到 ant-pagination
中显示的最后一页为 ant-pagination-item
并将其乘以产品总数一页以获得估计的产品数量。
我使用 simple_html_dom.php
编写了它,这就是我的代码的样子。
<?php
require_once('simple_html_dom.php');
$query = $_POST['q'];
$url = "https://www.daraz.pk/catalog/?q=".$query;
$html = file_get_html($url);
if (!empty($html)) {
$pages = $html->find("li.ant-pagination-item",-1);
$pages = html_entity_decode($pages->plaintext);
}
else {
echo "Something went wrong";
}
echo "<div>";
if (isset($pages)){
echo "FOUND $pages";
}
echo "</div>";
我正在通过表单传递查询并将其附加到 $url
问题是当代码运行时它只显示 FOUND
这意味着 $pages
已设置。我试图检查这是否仅发生在分页或其他任何情况下,发现只有分页显示出这种行为,我无法找到解决它的单一方法。
如果有人可以帮助我理解我所犯的错误,那将是一个很大的帮助。您可以尝试访问 This Link 并且会有 102 页,但是此脚本不会 return FOUND 102
但只打印 FOUND
。
由于页面的动态行为,这是不可能的。因为爬虫的库在 php 中,它只在页面加载后立即提取页面内容,忽略所有动态内容,依赖于 JavaScript 事件。此问题的解决方案是将 SimpleHTMLDOM
与 CasperJS
和 PhantomJs
一起使用。
Casper 将允许在页面完成加载时使用延迟,从而更容易抓取动态加载的组件。
我正在尝试抓取网站以根据提供的关键字估算产品数量。要完成此任务而不是滚动浏览每个页面并手动计算产品数量,我要做的就是找到 ant-pagination
中显示的最后一页为 ant-pagination-item
并将其乘以产品总数一页以获得估计的产品数量。
我使用 simple_html_dom.php
编写了它,这就是我的代码的样子。
<?php
require_once('simple_html_dom.php');
$query = $_POST['q'];
$url = "https://www.daraz.pk/catalog/?q=".$query;
$html = file_get_html($url);
if (!empty($html)) {
$pages = $html->find("li.ant-pagination-item",-1);
$pages = html_entity_decode($pages->plaintext);
}
else {
echo "Something went wrong";
}
echo "<div>";
if (isset($pages)){
echo "FOUND $pages";
}
echo "</div>";
我正在通过表单传递查询并将其附加到 $url
问题是当代码运行时它只显示 FOUND
这意味着 $pages
已设置。我试图检查这是否仅发生在分页或其他任何情况下,发现只有分页显示出这种行为,我无法找到解决它的单一方法。
如果有人可以帮助我理解我所犯的错误,那将是一个很大的帮助。您可以尝试访问 This Link 并且会有 102 页,但是此脚本不会 return FOUND 102
但只打印 FOUND
。
由于页面的动态行为,这是不可能的。因为爬虫的库在 php 中,它只在页面加载后立即提取页面内容,忽略所有动态内容,依赖于 JavaScript 事件。此问题的解决方案是将 SimpleHTMLDOM
与 CasperJS
和 PhantomJs
一起使用。
Casper 将允许在页面完成加载时使用延迟,从而更容易抓取动态加载的组件。