首页 > 其他分享 >应用scrapy爬虫框架

应用scrapy爬虫框架

时间:2023-04-27 09:25:28浏览次数:31  
标签:SpiName 存储 抓取 框架 Scrapy 爬虫 scrapy

Scrapy是一个基于Python的开源网络爬虫框架,它可以帮助我们快速、高效地抓取网页数据,并支持数据的自动化处理、存储和导出。Scrapy提供了丰富的扩展机制,可以轻松地实现各种自定义需求。

Scrapy的基本使用流程:

1、安装Scrapy框架

2、创建一个Scrapy爬虫项目

3、编写爬虫代码,定义要抓取的网站以及如何抓取数据

4、运行爬虫,开始抓取数据

5、对抓取到的数据进行处理、存储或导出

Scrapy的优点:

1、高效稳定:Scrapy采用异步IO的方式进行爬取,能够较快地抓取大量数据,并且具有较高的稳定性和可靠性。

2、扩展性强:Scrapy提供了丰富的插件和扩展机制,可以轻松地实现各种自定义需求。

3、数据处理方便:Scrapy支持数据的自动化处理、存储和导出,可以方便地对抓取到的数据进行处理。

4、文档齐全:Scrapy提供了完善的官方文档和教程,初学者也能够快速上手。

初识scrapy

scrapy=scrap+python,是python自动化爬虫框架,相当于一个模板。当启动了一个scrapy工程后,会自动生成若干相互关联的文件,用户仅需根据特定需求更改文件中的具体内容即可。

5步完成scrapy爬虫

1、创建scrapy工程和基础爬虫

a.更改cmd目录:cd C:\Programs\Python\

b.创建一个scrapy项目:scrapy startproject ProName

c.创建一个基础爬虫类:scrapy genspider SpiName "http://url.com"

其中,cmd目录路径是工程的目标存放路径,ProName是scrapy项目的工程名,而SpiName则是爬虫名字,在最后启动该项目时即调用该爬虫名字,http://url.com是目标网站的域名,该项目还会根据域名自动生成爬虫初始页。当然,这些在后续文件中都可以手动更改,项目只是自动化生成了一个模板而已。

2、定义文件存储格式

打开爬虫下的item.py文件,定义抓取数据的存储实体

1   class ProNameItem(scrapy.Item):
2    # define the fields for your item here like:
3    # name = scrapy.Field()

定义了item后,后续的抓取数据格式就都会按此存储。当然,可以在该文件中定义多类数据存储实体。

3、设计爬虫文件Spiders

在第1步的c中,创建了SpiName的基础爬虫后会自动生成一个SpiName.py文件,里面会声明一个SpinameSpider类,类下会至少包含四个要素:

class SpinameSpider(scrapy.Item):
    name = 'SpiName'
    allowed_domains = ['url.com']
    start_urls = [http://url.com]
    def parse(self, response):

其中start_urls可以是一组爬虫初始页,parse()是我们要定义的爬虫规则和获取数据方法,简单的爬虫也仅需更改此函数即可。

4、设置pipeline处理和存储数据

Pipeline原意是管道,实际上计算机专业里的流水线也是这个词。所以我们可以理解为该函数是对于抓取实体进行的一整套处理方法,包括常见的格式审查、数据去重和存入数据库中等等。

5、设置settings

进行简单的项目设置,该文件可以进行请求模拟头(UA)设置、多pipeline间优先级等,这也直接决定了该项目会如何启动爬虫及数据处理,不同的优先级会带来完全不同的效果。

标签:SpiName,存储,抓取,框架,Scrapy,爬虫,scrapy
From: https://www.cnblogs.com/q-q56731526/p/17357985.html

相关文章

  • 最容易上手的爬虫项目
    今天和大家分享一个爬取项目,那就是爬取自己博客的项目。1、确定爬取的目标开始之前我们需要确定一个爬取的目标,从我自己博客的首页进入。在这个例子里面我们要写一个爬虫将我的的文章列表拉出来,保存在一个JSON的文件里面。2、“种子”的分析,生成爬虫入口在谷歌浏览器中,打开开......
  • Django框架——ORM执行SQL语句、神奇的双下划线、外键字段的创建、跨表查询、进阶操作
    ORM执行SQL语句有时候ORM的操作效率可能偏低我们是可以自己编写SQL的方式一: models.User.objects.raw('select*fromapp01_user')方式二: fromdjango.dbimportconnectioncursor=connection.curson()cursorexecute('selectnamefromapp01_user')prin......
  • 利用pytorch深度学习框架验证骰子的合格性
    利用pytorch深度学习框架验证骰子的合格性骰子生产的合格性可以用概率来表达,比如每个面出现的概率大概都是1/6。importtorchfromd2limporttorchasd2lfromtorch.distributionsimportmultinomial#多次扔骰子出现每个面的概率服从多项式分布fair_probs=torch.ones(......
  • 推荐20个.NET/.NET Core 优秀项目框架
    推荐20个.NET/.NETCore优秀项目框架精通电脑科技于 2022-10-0916:58:48 发布2050 收藏 8文章标签: .net .netcore 前端版权前言分享一些.NET开源项目,通过了解和对比更多的项目来选择最适合我们自己学习、工作开发的一套项目。优秀的项目是不应该被埋......
  • 遇到 element-ui 框架的警告 `[Element Warn]please pass correct props!`
     第二行发现是校验表单项报错,到代码中查看原来是没有给 el-form 表单中的 el-form-item 传prop参数,这个prop参数是表单域 model字段,在使用 validate、validateField、resetFields 等方法的情况下,该属性是必填的......
  • (一)asyncio的基本使用框架,python高效处理数据,asyncio.gather(),asyncio. create_task
    asyncio是Python3.4引入的标准库,是一个基于事件循环的异步I/O并发库。它提供了一种协作式的多任务处理方式,使得我们能够在一个线程中并发处理多个I/O操作。它通过将I/O操作转化为异步的非阻塞调用,从而实现了高效的并发处理。其原理如下: 定义协程(coroutine):使用关键......
  • 初探Java框架
    (一)什么是Java框架?1.概念Java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。框架又叫做开发中的半成品,它不能提供整个WEB应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。说白......
  • 若依vue框架添加kotlin依赖,实现kotlin和java混合编译
    第一步:在最外部pom.xml文件添加版本号和依赖管理properties添加版本号<kotlin.version>1.4.21</kotlin.version><!--启用kotlin增量编译--><kotlin.compiler.incremental>true</kotlin.compiler.incremental>dependencyManagement添加依赖管理<!-......
  • Python爬虫基础之三
    Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、BeautifulSoup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。上一篇文章讲解了有关条件判断语句、循环语句、元组、字典等相关知识,本节将围绕......
  • 动力节点老杜Vue框架教程【三】Vue组件化
    Vue.js是一个渐进式MVVM框架,目前被广泛使用,也成为前端中最火爆的框架Vue可以按照实际需要逐步进阶使用更多特性,也是前端的必备技能动力节点老杜的Vue2+3全家桶教程已经上线咯!学习地址:https://www.bilibili.com/video/BV17h41137i4/视频将从Vue2开始讲解,一步一个案例,知识点......