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 相关文章推荐
python正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python处理文本文件并生成指定格式的文件
Jul 31 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
Python中functools模块的常用函数解析
Jun 30 Python
Python引用传值概念与用法实例小结
Oct 07 Python
python机器学习之神经网络(一)
Dec 20 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
pandas如何处理缺失值
Jul 31 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 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
使用无限生命期Session的方法
2006/10/09 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
JS实现的抛物线运动效果示例
2018/01/30 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
解决python 输出是省略号的问题
2018/04/19 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python tkinter控件布局项目实例
2019/11/04 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Looking4Parking美国:全球排名第一的机场停车比较品牌
2019/08/26 全球购物
环保专业大学生职业规划设计
2014/01/10 职场文书
先进集体事迹材料
2014/02/17 职场文书
法制宣传标语
2014/06/23 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
js Proxy的原理详解
2021/05/25 Javascript