关于python爬虫scrapy框架的简单了解

前言

Scrap是Python中最流行的爬虫框架之一,它提供了一套基于Twisted的异步网络框架,可以帮助开发者快速、高效地爬取网站数据。本文将介绍Scrapy的基本框架,包括如何创建Scrapy项目、如何编写爬虫、如何处理数据等。

目录


一、创建Scrapy项目

     1.安装Scrapy

2.创建Scrapy项目

二、编写爬虫

     1.创建Spider

     1.配置Item文件

     2.爬取所需网页信息

三、处理数据

    1.存储数据

   2.在setting文件中配置Item Pipeline 

四、运行爬虫

    运行Spider


一、创建Scrapy项目

     1.安装Scrapy

在开始之前,需要在python中先安装Scrapy。可以使用pip命令进行安装:

pip install scrapy
  1. 2.创建Scrapy项目

使用Scrapy创建一个新的项目,可以使用以下命令:

首先打开cmd命令行,cd到你要创建项目的文件夹后输入下面的scrapy项目创建命令:

scrapy startproject project_name

project_name是你创建的项目文件夹名称,可以自行修改

创建之后,比如demo是我的项目名称,我们打开项目,可以看到执行完该命令后,会在当前目录下创建一个名为demo的文件夹,其中包括如下文件:

二、编写爬虫

     1.创建Spider

在Scrapy中,爬虫是通过Spider类来实现的。我们需要创建一个Spider类,并定义一些属性和方法来指定爬取的网站和处理数据的方式。以下是一个简单的Spider类的示例:

在创建完项目后,我们要从cmd进入到项目的spider目录,

进入路径后输入创建爬虫文件的命令:

scrapy genspider spidername www.xxx.com

spidername是你的爬虫文件的名称,www.xxx.com则是你在爬虫文件中需要爬取的url,你可以在这条命令中输入,也可以在创建爬虫后进入文件中修改

在这个例子中,我们创建了一个名为myspider的Spider类,指定了allowed_domains和start_urls属性。allowed_domains用于指定允许爬取的域名,start_urls用于指定爬虫开始爬取的URL。parse方法用于处理网页数据。

     1.配置Item文件

在Scrapy中,Item是用于存储爬取到的数据的容器对象。它相当于一个Python字典(dictionary),其中包含了我们从HTML页面中提取的数据。通过定义Item,我们可以规定需要获取的数据字段名称以及对应的数据类型,从而方便后续处理和存储数据。下面简单讲解Scrapy中Item文件如何使用。

我们已经在项目中创建了一个名为items.py的文件,用于存放定义的Item类。例如,我们要爬取一个电影网站的电影信息,可以定义以下Item:

import scrapy

class MovieItem(scrapy.Item):
    title = scrapy.Field()
    genre = scrapy.Field()
    release_date = scrapy.Field()
    rating = scrapy.Field()

在上述代码中,我们定义了一个名为MovieItem的Item类,并设置了四个字段:titlegenrerelease_daterating。这些字段将用于存储我们从HTML页面中提取的电影信息。

     2.爬取所需网页信息

在Spider类中,我们可以使用XPath或CSS选择器来解析网页数据。例如,我们可以在parse方法中提取电影信息,并将其存储到一个MovieItem对象中:

def parse(self, response):
    sel = Selector(response)

    title = sel.xpath("//h1/text()").get()
    genre = sel.xpath("//div[@class='genre']/text()").get()
    release_date = sel.xpath("//span[@class='release-date']/text()").get()
    rating = sel.xpath("//span[@class='rating']/text()").get()

    # 创建MovieItem对象并存储数据
    item = MovieItem()
    item['title'] = title
    item['genre'] = genre
    item['release_date'] = release_date
    item['rating'] = rating

    yield item

在上述代码中,我们创建了一个名为itemMovieItem对象,并使用字典形式将提取到的电影信息存储到对应的字段中。最后,我们使用yield语句将该item对象返回给Scrapy框架,以便进行后续处理。

三、处理数据

    1.存储数据

数据处理和存储通过使用Item,我们可以方便地进行数据处理和存储。例如,我们可以使用管道(Pipeline)机制来处理和存储爬取到的数据。在项目文件夹的pipelines.py文件中,Item Pipeline是一组按顺序执行的操作,用于处理从Spider中提取的数据。以下是对上述代码的信息储存和Item Pipeline的示例:

class TxtPipeline:
    def open_spider(self, spider):
        self.file = open('data.txt', 'w', encoding='utf-8')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = f"Title: {item['title']}\nGenre: {item['genre']}\nRelease Date: {item['release_date']}\nRating: {item['rating']}\n\n"
        self.file.write(line)
        return item

在上述代码中,我们定义了一个名为TxtPipeline的Pipeline类。其中,open_spider方法在爬虫启动时执行,用于打开文件;close_spider方法在爬虫结束时执行,用于关闭文件;process_item方法用于处理每个Item对象。在process_item方法中,我们将提取到的数据以特定格式写入到txt文件中。

   2.在setting文件中配置Item Pipeline 

要启用Item Pipeline,我们需要在settings.py文件中进行配置。首先你需要到setting文件中启用Pipeline管道,因为Pipeline在setting中是默认为关闭状态,你需要去找到启用代码把注释取消:

ITEM_PIPELINES = { 'project_name.pipelines.MyPipeline': 300, }

我们将MyPipeline类添加到ITEM_PIPELINES字典中,并指定了优先级为300。你可以通过修改优先级的大小来决定在接收scrapy框架返回的item信息顺序。

然后添加FEED_FORMATFEED_URI配置项,用于指定输出文件的格式和路径,我们将输出文件的格式设置为txt,输出文件的路径为output.txt。你可以根据需要修改文件名和路径:

FEED_FORMAT = 'txt'
FEED_URI = 'output.txt'

四、运行爬虫

    运行Spider

要运行Spider,我们需要在cmd中使用以下命令来执行编写的代码:

scrapy crawl spider_name 

其中,spider_name是你的Spider类的名称。

通过以上步骤,你就可以将爬取到的信息存储为txt文件了。每次爬取时都会生成一个新的txt文件,并按照指定的格式保存爬取到的电影信息。

总结

本文介绍了Scrapy的基本框架,包括如何创建Scrapy项目、如何编写爬虫、如何处理数据等。Scrapy是一个非常强大的爬虫框架,可以帮助开发者快速、高效地爬取网站数据。如果你对爬虫感兴趣,不妨尝试一下Scrapy。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值