Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
本文实例讲述了Python Scrapy框架:通用爬虫之CrawlSpider用法。分享给大家供大家参考,具体如下:
步骤01: 创建爬虫项目
scrapy startproject quotes
步骤02: 创建爬虫模版
scrapy genspider -t quotes quotes.toscrape.com
步骤03: 配置爬虫文件quotes.py
import scrapyfrom scrapy.spiders import CrawlSpider, Rulefrom scrapy.linkextractors import LinkExtractorclass Quotes(CrawlSpider): # 爬虫名称 name = 'get_quotes' allow_domain = [’quotes.toscrape.com’] start_urls = [’http://quotes.toscrape.com/’]# 设定规则 rules = ( # 对于quotes内容页URL,调用parse_quotes处理, # 并以此规则跟进获取的链接 Rule(LinkExtractor(allow=r’/page/d+’), callback=’parse_quotes’, follow=True), # 对于author内容页URL,调用parse_author处理,提取数据 Rule(LinkExtractor(allow=r’/author/w+’), callback=’parse_author’) )# 提取内容页数据方法 def parse_quotes(self, response): for quote in response.css('.quote'): yield {’content’: quote.css(’.text::text’).extract_first(), ’author’: quote.css(’.author::text’).extract_first(), ’tags’: quote.css(’.tag::text’).extract() } # 获取作者数据方法 def parse_author(self, response): name = response.css(’.author-title::text’).extract_first() author_born_date = response.css(’.author-born-date::text’).extract_first() author_bron_location = response.css(’.author-born-location::text’).extract_first() author_description = response.css(’.author-description::text’).extract_first() return ({’name’: name, ’author_bron_date’: author_born_date, ’author_bron_location’: author_bron_location, ’author_description’: author_description })
步骤04: 运行爬虫
scrapy crawl quotes
更多相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家基于Scrapy框架的Python程序设计有所帮助。
相关文章:
1. IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更新、自动更新快捷键)2. Java多线程通信wait()和notify()代码实例3. 开发Java的又一利器-Visual Cafe4. IDEA 程序包不存在,找不到符号但是明明存在对应的jar包(问题分析及解决方案)5. SublimeText3配置PHP函数追踪定位插件6. 解决vue watch数据的方法被调用了两次的问题7. IDEA标签tabs多行显示的设置8. 详解idea中web.xml默认版本问题解决9. javascript将扁平的数据转为树形结构的高效率算法10. Java实现Windows计算器界面
![Django实现自定义路由转换器](http://www.haobala.com/attached/image/2.jpg)