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

《Scrapy简单入门实例》 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())

《Scrapy简单入门实例》 image.png

八、保存爬取到的数据:

scrapy crawl dmoz -o items.json

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

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

    原文作者:hu1991die
    原文地址: https://www.jianshu.com/p/d598f6184455
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞