求可从Python脚本调用的Scrapy爬虫示例:遍历全站URL并输出页面地址
可直接运行的Scrapy全站URL遍历脚本示例
你的代码存在几个关键问题导致无法运行,修正后的完整脚本如下,它会遍历目标网站的所有URL并输出每个访问页面的地址:
from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor from scrapy.crawler import CrawlerProcess class MySpider(CrawlSpider): name = 'toscrape' allowed_domains = ['toscrape.com'] start_urls = ['http://books.toscrape.com'] # 定义规则:提取所有站内链接并跟进,交给parse_item方法处理 rules = ( Rule(LinkExtractor(allow=(), deny=()), callback='parse_item', follow=True), ) def parse_item(self, response): # 输出当前访问的页面URL print(f"访问页面: {response.url}") # 这里可添加其他处理逻辑,比如提取页面内容 if __name__ == "__main__": # 初始化爬虫进程并启动 process = CrawlerProcess() process.crawl(MySpider) process.start()
关键修正点说明:
- 导入修正:替换错误的
twisted.internet.process,使用Scrapy官方的CrawlerProcess启动爬虫 - 链接遍历规则:添加
Rule和LinkExtractor,这是CrawlSpider实现全站遍历的核心配置,会自动提取并跟进所有符合条件的站内链接 - 方法逻辑修正:原代码直接调用类方法会报错,改为规范的类回调方法处理URL输出
- 启动逻辑优化:用
if __name__ == "__main__"包裹启动代码,符合Python脚本运行规范
运行脚本后,控制台会持续输出爬虫访问的每个页面URL,实现全站遍历需求。
内容的提问来源于stack exchange,提问作者AnkurS
相关产品推荐
相关产品推荐

