在阅读“Why Johnny Can’t Pentest: An Analysis of Black-box Web Vulnerability Scanners”之后,可以理解,有些网站,如日历应用程序,爬虫程序很难处理。它们似乎是“无限”的网站,只包含到下一天/月/年等的链接
另外,一些网站设置了蜘蛛陷阱,或者可能无意中创建了一个类似的系统(页面链接是永无止境的)。在
如果我a)得到网站所有者的许可,可以自由地浏览他们的网站,b)希望使用scrapy,我可以使用什么样的技术来确定我是否真的遇到了一个“无限”的网站,而不是特定的例子?在
注意:我说的不是“无限”滚动,而是当有无止境的页面时。在
无限网站的一个例子可能是(尽管毫无意义和琐碎):
<?php
if(isset($_GET['count'])){
$count = intval($_GET['count']);
$previous = $count - 1;
$next = $count + 1;
?>
<a href="?count=<?php echo $previous;?>">< Previous</a>
Current: <?php echo $count;?>
<a href="?count=<?php echo $next;?>">Next ></a>
<?
}
?>
在这里,你只需点击下一页和上一页来显示更多的页面。在
我能想到的一件事就是把所有的项目ID传递到下一个页面 然后检查下一页是否有相同的项目,这意味着分页已经结束,没有新的记录
即使分页是无止境的,内容通常也不是。因此,当问题是无休止的分页时,您可以通过仅在当前页有内容时或(如果您想优化)仅当当前页具有已知的每页项目数时,才能通过获取下一页来防止无休止的循环。在
在其他情况下,例如浏览日历,其中某些日期可能具有其他日期没有的值,则可以对spider硬编码一个限制(如果下一个URL覆盖的日期是X或更早,则不要进一步解析)。在
相关问题 更多 >
编程相关推荐