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求pi的方法
Oct 08 Python
Python之PyUnit单元测试实例
Oct 11 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
Python多线程扫描端口代码示例
Feb 09 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
python实现监控阿里云账户余额功能
Dec 16 Python
Django认证系统user对象实现过程解析
Mar 02 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
php intval函数用法总结
2019/04/14 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
解决uWSGI的编码问题详解
2017/03/24 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
详解python:time模块用法
2019/03/25 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
类和结构的区别
2012/08/15 面试题
Python的两道面试题
2013/06/29 面试题
季度思想汇报
2014/01/01 职场文书
检察官就职演讲稿
2014/01/13 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
股东大会通知
2015/04/24 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang