当前位置: 首页 > news >正文

Python爬虫教程-31-创建 Scrapy 爬虫框架项目

本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细

Python爬虫教程-31-创建 Scrapy 爬虫框架项目

  • 首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装
  • Anaconda 下载地址:https://www.anaconda.com/download/

Scrapy 爬虫框架项目的创建

  • 0.打开【cmd】
  • 1.进入你要使用的 Anaconda 环境
    • 1.环境名可以在【Pycharm】的【Settings】下【Project:】下找到
      这里写图片描述
    • 2.使用命令:activate 环境名,例如:

      activate learn

    • 3.进入想要存放 scrapy 项目的目录下 【注意】
    • 4.新建项目:scrapy startproject xxx项目名,例如:

      scrapy startproject new_project

  • 5.操作截图:
    这里写图片描述
  • 6.在文件资源管理器打开该目录,就会发现生成了好几个文件
    这里写图片描述
  • 7.使用 Pycharm 打开项目所在目录就可以了

这里我们就把项目创建好了,分析一下自动生成的文件的作用

Scrapy 爬虫框架项目的开发

  • 0.使用 Pycharm 打开项目,截图:
    这里写图片描述
  • 项目的开发的大致流程:
    • 1.明确需要爬取的目标/产品:编写 item.py
    • 2.在 spider 目录下载创建 python 文件制作爬虫:
      • 地址 spider/xxspider.py 负责分解,提取下载的数据
    • 3.存储内容:pipelines.py
  • Pipeline.py 文件
    • 对应 pipelines 文件
    • 爬虫提取出数据存入 item 后,item 中保存的数据需要进一步处理,比如清洗,去虫,存储等
    • Pipeline 需要处理 process_item 函数
    • process_item
      • spider 提取出来的 item 作为参数传入,同时传入的还有 spider
      • 此方法必须实现
      • 必须返回一个 Item 对象,被丢弃的 item 不会被之后的 pipeline
  • _ init _:构造函数
    • 进行一些必要的参数初始化
  • open_spider(spider):
    • spider 对象对开启的时候调用
  • close_spider(spider):
    • 当 spider 对象被关闭的时候调用
  • Spider 目录
    • 对应的是文件夹 spider 下的文件
    • _ init _:初始化爬虫名称,start _urls 列表
    • start_requests:生成 Requests 对象交给 Scrapy 下载并返回 response
    • parse:根据返回的 response 解析出相应的 item,item 自动进入 pipeline:如果需要,解析 url,url自动交给 requests 模块,一直循环下去
    • start_requests:此方法尽能被调用一次,读取 start _urls 内容并启动循环过程
    • name:设置爬虫名称
    • start_urls:设置开始第一批爬取的 url
    • allow_domains:spider 允许去爬的域名列表
    • start_request(self):只被调用一次
    • parse:检测编码
    • log:日志记录

更多文章链接:Python 爬虫随笔


  • 本笔记不允许任何个人和组织转载

转载于:https://www.cnblogs.com/xpwi/p/9601038.html

相关文章:

  • 数据结构(二) 线性表
  • vue使用echarts
  • luogu 1772 物流运输 ZJOI2006 spfa+dp
  • Java快速教程
  • python接口自动化测试二十八:连接SQL sever操作
  • python中如何去掉字符串中的空格
  • jupyter、flask、tornado、djiango安装
  • BZOJ2768 JLOI2012冠军调查(最小割)
  • Js判断参数(String,Array,Object)是否为undefined或者值为空
  • 图片合成
  • 对象 get和set方法
  • spsss基本统计分析操作攻略
  • liunx环境下mongodb3.2升级至3.6
  • Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
  • web服务器下出现大量TIME_WAIT
  • JavaScript-如何实现克隆(clone)函数
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【5+】跨webview多页面 触发事件(二)
  • 【刷算法】从上往下打印二叉树
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 08.Android之View事件问题
  • 345-反转字符串中的元音字母
  • 77. Combinations
  • Apache Spark Streaming 使用实例
  • co.js - 让异步代码同步化
  • ECMAScript6(0):ES6简明参考手册
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 缓存与缓冲
  • 微信小程序开发问题汇总
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # C++之functional库用法整理
  • (12)Linux 常见的三种进程状态
  • (14)Hive调优——合并小文件
  • (arch)linux 转换文件编码格式
  • (k8s中)docker netty OOM问题记录
  • (八)Spring源码解析:Spring MVC
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计ssm电影分享网站
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Core WebAPI中封装Swagger配置
  • .NET单元测试
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [ABC294Ex] K-Coloring
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务