Давайте представим, что у меня есть веб-страница вроде this .
counter.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>
<?
}
?>
Это «бесконечный» веб-сайт, потому что вы можете просто нажимать кнопку «Далее», чтобы перейти кследующая страница (счетчик просто увеличится) или предыдущая и т. д.
Однако, если я захочу просканировать эту страницу и перейти по ссылкам, используя подобную скрапировку, скрапинг никогда не прекратит ползти.
Пример паука:
urls = []
class TestSpider(CrawlSpider):
name = 'test'
allowed_domains = ['example.com']
start_urls = ['http://example.com/counter?count=1']
rules = (
Rule(LinkExtractor(), callback='parse_item', follow=True),
)
def parse_item(self, response):
urls.append(response.url)
Какой механизм я могу использовать, чтобы определить, действительно ли я застрял на бесконечном веб-сайте и мне нужно вырваться из него?