Scrapy基础

发布于:2023-01-15 ⋅ 阅读:(164) ⋅ 点赞:(0)

Scrapy是一种应用框架,实现获取网站数据、提取结构性数据。常用在数据挖掘、信息处理、存储历史数据等。

Scrapy架构

引擎

Scrapy Engine

中心处理,负责各种中间的数据通讯、传递等

调度器

Scheduler

接受引擎发过来的requests请求,并按照一定方式进行整理排列,引擎需要时交还给引擎

下载器

Download

下载引擎发送的所有requests请求,将响应交还给引擎处理

爬虫

Spider

处理所有响应,分析提取数据,获取Item字段需要的数据,并跟进发送下一步的url

管道

Item Pipeline

处理爬虫获得的Item进行数据处理

下载中间件

Download Middlewares

自定义扩展下载功能的组件

Spider中间件

Spider Middlewares

自定义扩展引擎和爬虫中间通信的组件

运作流程:

  • 爬虫向引擎发送需要处理的url
  • 引擎获得url,发送给调度器进行排队
  • 调度器将处理好的requests请求发送给引擎
  • 引擎将请求发送给下载器进行内容下载,下载成功后交还给引擎;下载失败的话引擎告诉调度器这个请求下载失败,一会再次下载
  • 引擎将下载好的内容交给爬虫处理,爬虫处理后得到一个Item数据,如果有跟进的url,则将两个都交给引擎
  • 引擎将得到的Item数据交给管道处理,将需要跟进的url交给调度器,重复之前的内容,直到调度器中没有请求,程序结束

创建一个Scrapy工程

首先安装,用命令行窗口进行安装 pip intsall scrapy

输入命令创建一个工程:scrapy startproject crawlerjob(最后的是工程名)

我的创建之后在c盘,移动到pycharm底下打开:

里面有六个文件:

scrapy.cfg 项目的配置文件
_init_.py 将文件夹变成一个python模块
items.py 项目的目标文件
pipelines.py 项目的管道文件
middlewares.py 定义爬虫中间间和下载中间件两个类
settings.py 项目的设置文件

 写一个爬虫

首先在items.py里面定义一个Item,用来存储获取得到的相应信息:

import scrapy


class CrawlerjobItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    position=scrapy.Field()

再cd到当前文件夹目录下,创建一个 爬虫:

scrapy genspider -t basic spider51job 51job.com
前面都是固定的,最后两个一个是爬虫名,一个是爬取范围,即访问的网站,在工程文件下可以看到新建了一个爬虫文件,爬虫逻辑都会在这个文件里写:

在parse方法中写爬虫逻辑:

    def parse(self, response):
        item=CrawlerjobItem()   #实例化一个item
        item['position']=response.xpath('//p[@class="t"]/span/@title').extract()    #执行爬虫,使用xxpath方法获取内容然后存储到iem里
        print(item['position'])

代码写完在命令行窗口输入指令:scrapy crawl spider51job,执行名为spider51job的爬虫,就能执行爬虫逻辑获取网页信息。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到