Я понял, что при использовании CrawlSpider
с правилом LinkExtractor
выполняется только анализ связанных страниц, но не самой начальной страницы.
Например, если http://mypage.test
содержит ссылки на http://mypage.test/cats/
и http://mypage.test/horses/
, сканер будет анализировать страницу "Кошки и лошади" без разбора http://mypage.test
. Вот простой пример кода:
from scrapy.crawler import CrawlerProcess
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'myspider'
start_urls = ['http://mypage.test']
rules = [
Rule(LinkExtractor(), callback='parse_page', follow=True),
]
def parse_page(self, response):
yield {
'url': response.url,
'status': response.status,
}
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
'ITEM_PIPELINES': {
'pipelines.MyPipeline': 100,
},
})
process.crawl(MySpider)
process.start()
Моя цель - проанализировать каждую страницу на сайте, перейдя по ссылкам. Как мне это сделать?
Очевидно, CrawlSpider
с правилом LinkExtractor
анализирует только связанные страницы, но не саму начальную страницу.