Python网络爬虫(scrapy框架的基本使用)

Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

scrapy执行流程:

1.spiders(爬虫文件)将提取到的url传给Scrapy Engine(引擎)

  1. 然后通过引擎再传给Scheduler(调度器),Scheduler(调度器)把接收到的url存放在任务队列中
  2. 引擎再从任务队列里取出url通过Downloader Middlewares(下载中间件)传给Downloader(下载器)发起请求
  3. Downloader(下载器)请求网络然后把response(响应结果)通过Downloader Middlewares(下载中间件)传给引擎,再通过Spider Middlewares(爬虫中间件)返回给Spiders(爬虫文件)
  4. 最后爬虫文件把提取到的数据传给Item Pipeline(管道文件)-数据队列。

Scrapy的安装介绍:
  • Windows 安装方式
    -- Python 3
    -- 升级pip版本

       pip3 install --upgrade pip
    

通过pip3 安装 Scrapy 框架

   pip3 install Scrapy
  • Linux 安装方式
    通过pip3 安装 Scrapy 框架

      sudo pip3 install scrapy
    

如果安装不成功再试着添加这些依赖库

   sudo apt-get install python3-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

基本项目流程为:

1、创建一个Scrapy项目

# 创建爬虫项目
scrapy startproject jobboleproject

# 新建爬虫文件
scrapy genspider jobbole [jobbole.com](http://jobbole.com)

2、定义提取的Item

比如我们打算抓取: 目标url:

http://blog.jobbole.com/all-posts/

3、编写爬取网站的spider并提取Item

#标题
title = scrapy.Field()
#创建时间
create_date = scrapy.Field()
#文章地址
url = scrapy.Field()
#id
url_object_id = scrapy.Field()
#文章图片
front_image_url = scrapy.Field()

4、编写Item Pipeline来存储提取到的Item(即数据)

--item pipiline组件是一个独立的Python类,其中process_item()方法必须实现:

class JobbolePipeline(object):
    def __init__(self):    
        # 可选实现,做参数初始化等
        # doing something

    def process_item(self, item, spider):
        # item (Item 对象) – 被爬取的item
        # spider (Spider 对象) – 爬取该item的spider
        # 这个方法必须实现,每个item pipeline组件都需要调用该方法,
        # 这个方法必须返回一个 Item 对象,被丢弃的item将不会被之后的pipeline组件所处理。
        return item

    def open_spider(self, spider):
        # spider (Spider 对象) – 被开启的spider
        # 可选实现,当spider被开启时,这个方法被调用。

    def close_spider(self, spider):
        # spider (Spider 对象) – 被关闭的spider
        # 可选实现,当spider被关闭时,这个方法被调用

5、运行:

 scrapy crawl jobbole

你可能感兴趣的:(Python网络爬虫(scrapy框架的基本使用))