第一,scrapy框架的安装

通过命令提示符进行安装(如果没有安装的话)

  1. pip install Scrapy

如果需要卸载的话使用命令为:

  1. pip uninstall Scrapy

第二,scrapy框架的使用

先通过命令提示符创建项目,运行命令:

  1. scrapy startproject crawlquote#crawlquote这是我起的项目名

其次,通过我们的神器PyCharm打开我们的项目--crawlquote(也可以将PyCharm打开我们使用虚拟环境创建的项目)

然后,打开PyCharm的Terminal,如图

然后在命令框中输入

  1. scrapy genspider quotes quotes.toscrape.com

此时的代码目录为:

文件说明:

  • scrapy.cfg  项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)

  • items.py    设置数据存储模板,用于结构化数据,如:Django的Model

  • pipelines    数据处理行为,如:一般结构化的数据持久化

  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等

  • spiders      爬虫目录,如:创建文件,编写爬虫规则

quotes.py使我们书写的爬虫---里面是发起请求-->拿到数据---->临时存储到item.py中

运行爬虫命令为:

  1. scrapy crawl quotes

 第三,使用scrapy的基本流程

(1)明确需要爬取的数据有哪些

(2)分析页面结构知道需要爬取的内容在页面中的存在形式

(3)在item.py中定义需要爬取的数据的存储字段

(4)书写爬虫  -spider中定义(spiders中的quotes.py) --数据重新格式化化后在item.py中存储

(5)管道中--pipeline.py ----对item里面的内容在加工 , 以及定义链接数据库的管道

(6)配置文件中----settings.py中开启管道作用:ITEM_PIPELINES ,定义数据库的名称,以及链接地址

(7)中间件中----middlewares.py

根据上述的一个简单的代码演示:

1)item.py中

  1. import scrapy
  2.  
  3. class CrawlquoteItem(scrapy.Item):
  4. # define the fields for your item here like:
  5. # name = scrapy.Field()
  6. text = scrapy.Field()
  7. author = scrapy.Field()
  8. tags = scrapy.Field()

2)spiders--quotes(爬虫)

  1. # -*- coding: utf- -*-
  2. import scrapy
  3. from crawlquote.items import CrawlquoteItem
  4.  
  5. class QuotesSpider(scrapy.Spider):
  6. name = 'quotes'
  7. allowed_domains = ['quotes.toscrape.com']
  8. start_urls = ['http://quotes.toscrape.com/']
  9.  
  10. def parse(self, response):
  11. quotes = response.css('.quote')
  12. for quote in quotes:
  13. item = CrawlquoteItem()
  14. text = quote.css('.text::text').extract_first() # 获取一个
  15. author = quote.css('.author::text').extract_first()
  16. tags = quote.css('.tags .tag::text').extract()
  17. item['text'] = text
  18. item['author'] = author
  19. item['tags'] = tags
  20. yield item # 将网页中的内容重新生成一个item以便于后面的认识
  21.  
  22. next = response.css('.pager .next a::attr(href)').extract_first()
  23. url = response.urljoin(next) # urljoin翻页
  24. yield scrapy.Request(url=url, callback=self.parse) # 递归调用

3)pipeline.py中

  1. # -*- coding: utf- -*-
  2.  
  3. # Define your item pipelines here
  4. #
  5. # Don't forget to add your pipeline to the ITEM_PIPELINES setting
  6. # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
  7. import pymongo
  8. from scrapy.exceptions import DropItem
  9.  
  10. class TextPipeline(object):
  11. def __init__(self):
  12. self.limit =
  13.  
  14. def process_item(self, item, spider): # 对重新生成的item进行再制作
  15. if item['text']:
  16. if len(item['text']) > self.limit:
  17. item['text'] = item['text'][:self.limit].rstrip() + '...'
  18. return item
  19. else:
  20. return DropItem('Missing Text')
  21.  
  22. class MongoPipeline(object): # 与数据库有关的操作
  23. def __init__(self, mongo_uri, mongo_db): # () MongoPipeline构造函数
  24. self.mongo_uri = mongo_uri
  25. self.mongo_db = mongo_db
  26.  
  27. @classmethod
  28. def from_crawler(cls, crawler): # ()读取settings里面的值,类方法
  29. return cls(
  30. mongo_uri=crawler.settings.get('MONGO_URI'),
  31. mongo_db=crawler.settings.get('MONGO_DB')
  32. )
  33.  
  34. def open_spider(self, spider): # ()爬虫启动时需要的操作
  35. self.client = pymongo.MongoClient(self.mongo_uri)
  36. self.db = self.client[self.mongo_db]
  37.  
  38. def process_item(self, item, spider): # 保存到mongodb数据库
  39. name = item.__class__.__name__
  40. self.db[name].insert(dict(item))
  41. return item
  42.  
  43. def close_spider(self, spider): # 关闭mongodb
  44. self.client.close()

4)settings.py中

  1. BOT_NAME = 'crawlquote'
  2.  
  3. SPIDER_MODULES = ['crawlquote.spiders']
  4. NEWSPIDER_MODULE = 'crawlquote.spiders'
  5.  
  6. #数据库链接
  7. MONGO_URI = 'localhost'
  8. MONGO_DB = 'crawlquote'
  9.  
  10. #项目管道开启
  11. ITEM_PIPELINES = {
  12. 'crawlquote.pipelines.TextPipeline': ,
  13. 'crawlquote.pipelines.MongoPipeline': ,
  14. }

5)此处还没有用的middelwares.py

总结一下:

针对某部分数据的爬取,先要在item中定义字段,然后在爬虫程序中通过选择器拿到数据并存储到item中,再然后通过pipeline的在加工+setting文件修改--存储到数据库中。此时简单爬取就实现了。

分布式爬虫搭建系列 之三---scrapy框架初用的更多相关文章

  1. 分布式爬虫搭建系列 之四---scrapy分布式框架

    带录入SAFCDS 

  2. 分布式爬虫搭建系列 之一------python安装及以及虚拟环境的配置及scrapy依赖库的安装

    python及scrapy框架依赖库的安装步骤: 第一步,python的安装 在Windows上安装Python 首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Pyt ...

  3. 分布式爬虫搭建系列 之二-----神器PyCharm的安装

    这里我们使用PyCharm作为开发工具,以下过程摘抄于:http://blog.csdn.net/qq_29883591/article/details/52664478  作者:陌上行走 Pytho ...

  4. Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  5. 5、爬虫系列之scrapy框架

    一 scrapy框架简介 1 介绍 (1) 什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能 ...

  6. 爬虫系列之Scrapy框架

    一 scrapy框架简介 1 介绍 (1) 什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能 ...

  7. 爬虫(九)scrapy框架简介和基础应用

    概要 scrapy框架介绍 环境安装 基础使用 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能 ...

  8. Python3爬虫(十七) Scrapy框架(一)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 1.框架架构图: 2.各文件功能scrapy.cfg 项目的配置文件items.py 定义了Item数据结构,所有 ...

  9. 爬虫 (5)- Scrapy 框架简介与入门

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

随机推荐

  1. iOS-免证书真机调试

     使用方法: 1.新建一个普通的项目 2.进入xcode,菜单栏选择xcode –> preferences (快捷键 command + ,) 3.在Accounts选项卡添加自己的Apple ...

  2. html5新增语义化标签

    注意:body.section.nav 需要h1-h6. div.header则不需要. 1):<article> 显示一个独立的文章内容. 例如一篇完整的论坛帖子,一则网站新闻,一篇博客 ...

  3. Java基础摘要(一)

    三大特性 封装 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性.简单的说,一 ...

  4. python基础之继承原理,多态与封装

    1.什么是继承? 继承是一种创建新的类的方式.class A: passclass B: pass2.如何继承---->如何寻找继承关系 现实生活中找继承关系是自下而上,在程序中写是自上而下继承 ...

  5. 解决 jsonP 安全问题

    jsonp安全性防范,分为以下几点: 1.防止callback参数意外截断js代码,特殊字符单引号双引号,换行符均存在风险 2.防止callback参数恶意添加标签(如script),造成XSS漏洞 ...

  6. PostgreSQL日志配置记录

    日志审计  审计是值记录用户的登陆退出以及登陆后在数据库里的行为操作,可以根据安全等级不一样设置不一样级别的审计, 此处涉及的参数文件有: logging_collector      --是否开启日 ...

  7. python之路——文件操作

    阅读目录 初窥文件操作基本流程 文件编码 文件的打开模式 文件内的光标移动 with上下文管理 文件的修改 练习 回到顶部 初窥文件操作基本流程 计算机系统分为:计算机硬件,操作系统,应用程序三部分. ...

  8. 转: Photon 3.4 Changed Logs ..

    最新版了.修了很多bug. Photon 3.4 http://doc.exitgames.com/en/onpremise/current/reference/version-history/pho ...

  9. 21天学通C++_Day3_Part2

    0.语句的分行 法1:在第一行末尾添加反斜杠 cout<<"Hello \ World!"<<endl; 法2:将字符串字面量分成两个,编译器注意到两个响铃 ...

  10. HDU3507Print Article (斜率优化DP)

    Zero has an old printer that doesn't work well sometimes. As it is antique, he still like to use it ...