美文网首页Python爬虫系列
Scrapy简单入门实例

Scrapy简单入门实例

作者: hu1991die | 来源:发表于2017-11-20 23:12 被阅读421次

一、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简单入门实例

    一、demo介绍: 创建一个Scrapy项目(爬虫)定义提取的Item对象(即ORM,类似于Java中的POJO实...

  • Scrapy框架入门实例(爬取腾讯社招招聘信息含代码)

    Scrapy简单入门及实例讲解 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在...

  • Scrapy简单入门及实例讲解!

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据...

  • Scrapy爬虫入门实例

    在搭建好了Scrapy的开发环境后(如果配置过程中遇到问题,请参考上一篇文章搭建Scrapy爬虫的开发环境,或者在...

  • 10分钟从入门到进阶python爬虫

    本文目录 基础入门 基本模块 方法实例 爬虫框架(scrapy) 常用工具(神器) 分布式爬虫 一、基础入门 1....

  • Scrapy入门环境搭建

    Scrapy入门环境搭建 概述 本文介绍用python3来搭建scrapy环境,实践一下最简单的scrapy用法。...

  • 爬虫入门(4)-Scrapy框架简单入门

    scrapy作为一个强大的爬虫框架,就不多作介绍。今天刚入门scrapy,所以做个简单的使用 Scrapy中文文档...

  • scrapy笔记

    1 scrapy的运行原理 参考:Learning Scrapy笔记(三)- Scrapy基础Scrapy爬虫入门...

  • Scrapy入门案例

    Scrapy入门案例 Scrapy教程: 官方 《Scrapy 1.5 documentation》 中文 《S...

  • scrapy配置redis简单实例

    安装 安装库 安装redis 配置 在setting.py文件中配置 编写spider 上述中一定要注意重写sta...

网友评论

    本文标题:Scrapy简单入门实例

    本文链接:https://www.haomeiwen.com/subject/cgvbvxtx.html