Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例


Posted in Python onApril 11, 2020

本文实例讲述了Python Scrapy框架:通用爬虫之CrawlSpider用法。分享给大家供大家参考,具体如下:

步骤01: 创建爬虫项目

scrapy startproject quotes

步骤02: 创建爬虫模版

scrapy genspider -t quotes quotes.toscrape.com

步骤03: 配置爬虫文件quotes.py

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class 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程序设计有所帮助。

Python 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
Python实现AI换脸功能
Apr 10 #Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 #Python
Jupyter notebook运行Spark+Scala教程
Apr 10 #Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 #Python
jupyter notebook清除输出方式
Apr 10 #Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 #Python
jupyter notebook参数化运行python方式
Apr 10 #Python
You might like
PHP 程序员的调试技术小结
2009/11/15 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
Javascript Object.extend
2010/05/18 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python赋值操作方法分享
2013/03/23 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
Python OpenCV实现视频分帧
2019/06/01 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Python @property使用方法解析
2019/09/17 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
逻辑链路控制协议
2016/10/01 面试题
《手指教学》反思
2014/02/14 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
出纳员岗位职责
2014/03/13 职场文书
师德建设实施方案
2014/03/21 职场文书
公司董事长岗位职责
2014/06/08 职场文书
询价采购方案
2014/06/09 职场文书
小学领导班子对照材料
2014/08/23 职场文书
实训报告范文大全
2014/11/04 职场文书
本溪关门山导游词
2015/02/09 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书