Scrapy简单入门实例

一、demo介绍:

  1. 创建一个Scrapy项目(爬虫)
  2. 定义提取的Item对象(即ORM,类似于Java中的POJO实体类)
  3. 编写爬取的Spider爬虫并且提取Item(核心内容)
  4. 编写item pipeline管道来存储提取的item信息(持久化数据,例如存Mysql数据库或者MongoDB数据库或者导出CSV、Excel文件等等操作)

二、创建项目

使用startproject命令创建一个Scrapy爬虫项目

scrapy startproject tutorial
image.png

三、目录结构:

|-tutorial/
    |-scrapy.cfg
    |-tutorial/
         |-__init__.py
         |-items.py
         |-pipelines.py
         |-settings.py
         |-middlewares.py
         |-spiders/
            |- __init__.py

四、结构说明:

  • tutorial/init.py:该文件定义了包的属性和方法。一个包是一个带有特殊文件 init.py 的目录,其实它可以什么也不定义,可以只是一个空文件,但是必须存在(如果删掉就变成一个普通的目录了)。
  • scrapy.cfg: 自动生成的项目配置文件(类似于eclipse生成的.project文件,或者idea生成的.iml文件)。
  • tutorial/: 该项目的python模块,之后您将在此加入代码。
  • tutorial/items.py: 项目中的item文件(ORM定义)。
  • tutorial/pipelines.py: 项目中的pipelines文件(存储数据)。
  • tutorial/middlewares.py: Spider中间件(常用的有下载中间件,即处理下载请求部分,这里不做介绍,如果想深入了解可以看下官网教程)
  • tutorial/settings.py: 项目的核心配置文件(配置请求头、数据库连接信息、USER_AGENT,线程数等等)。
  • tutorial/spiders/: 放置spider代码的目录(编写spider爬虫)。

五、定义Item

ORM(对象关系映射)定义,如果做过javaweb开发的童靴应该知道,就和通常我们定义的javaBean对象一样,用来装载对象数据用的。

import scrapy

class TutorialItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

六、编写第一个爬虫(Spider)

tutorial/spiders目录下新建一个dmoz_spider.py文件,创建一个DmozSplider类,并且继承scrapy.Spider类。

import scrapy

class DmozSplider(scrapy.Spider):
    name="dmoz"
    allowed_domain=["dmoz.org"]
    start_urls=[
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self,response):
        filename=response.url.split("/")[-2]
        with open(filename,"wb") as f:
            f.write(response.body)

注意,上面我们创建了一个DmozSplider类,并且该类必须继承于scrapy.Spider类,且同时定义以下三个属性:

name:用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
start_urls:包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
parse():是spider的一个方法。 被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。

七、爬取

进入项目的根目录,执行下列命令启动spider爬虫:

scrapy crawl dmoz

或者写一个main.py启动入口(如果是在PyCharm中,直接右键运行【Run Main】即可):

from scrapy import cmdline

cmdline.execute("scrapy crawl dmoz".split())
image.png

八、保存爬取到的数据:

scrapy crawl dmoz -o items.json

该命令将采用 JSON 格式对爬取的数据进行序列化,生成items.json文件

官网教程:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html#spider

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,848评论 4 46
  • Python版本管理:pyenv和pyenv-virtualenvScrapy爬虫入门教程一 安装和基本使用Scr...
    inke阅读 61,415评论 6 99
  • Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信...
    JasonDing阅读 122,603评论 15 126
  • scrapy是python最有名的爬虫框架之一,可以很方便的进行web抓取,并且提供了很强的定制型,这里记录简单学...
    bomo阅读 2,216评论 1 11
  • 一个多月前,我开车和后座的儿子聊天。聊着聊着,我对他说:“我喜欢你调皮。” “什么?!你……喜欢……我调皮?”他几...
    Hakunama塔塔阅读 748评论 1 3