一、前情提要

经过前面的学习,我们初识了 Scrapy 框架,通过 Scrapy 提供的互动工具,我们在命令行中体验了 Scrapy 中的 CSS 选择器

最重要的几个点是:. 代表 class,# 代表 id,比如 div.book 代表 class 包含 book 的 div 元素,div#book 代表 id 为 book 的 div 元素。在有层级关系时,用 > 号连接直接下一级的元素,用空格连接所有下级的元素。

这篇文章将带大家将走进 Scrapy,学习如何启动一个真正意义上的 Scrapy 项目。

目录

  • 一、前情提要
  • 二、走进scrapy
    • 1、items.py
    • 2、spiders 目录
    • 3、pipelines.py
    • 4、settings.py
    • 5、执行爬取

二、走进scrapy

和之前一样,我们 Win + R 打开 cmd 命令行,在命令行输入 scrapy 检查框架是否正常显示,然后我们再输入explorer . 打开执行命令所在的文件夹↓

注意:explorer 命令后面有一个点,这个点代表当前文件夹,同时要注意 explorer 命令和点之间有一个空格。


之后在命令行中输入下面的命令,让 Scrapy 创建一个名叫 appinn 项目:

scrapy startproject appinn


这时你会发现刚刚打开的文件夹里多了一个叫做 appinn 的文件夹,它的目录结构如下:

appinn
├── appinn         # 项目代码所在的目录
│   ├── __init__.py
│   ├── items.py     # 定义数据的格式
│   ├── middlewares.py
│   ├── pipelines.py   # 处理数据、输出到文件等等
│   ├── settings.py    # 一些设置
│   └── spiders      # 爬虫所在的目录
│       └── __init__.py
└── scrapy.cfg


上面标红的就是需要大家留心的!
然后我们还需要在命令行里输入 cd appinn,进入 appinn 文件夹。

注意:下面的操作都需要保证命令行在项目里哦,如果出错,请先检查一下自己是不是在项目根目录里。

下面我们来跟随一个简单的项目实战,理解这些文件的作用
我们打开小众软件的 Windows 软件推荐页:https://www.appinn.com/category/windows/

然后随便打开一篇文章
这次我们要爬取的是 Windows 版面下所有文章的标题、时间、作者、分数、正文↓

接下来,我们来分别看看 Scrapy 生成的这些文件在爬虫中具体起到了什么作用。

1、items.py

items.py 是记录我们想要的数据格式的文件。

在确定了我们要爬的数据是什么之后,就可以来定义数据的格式。我们数据的格式可以定义在 items.py 里。创建项目时 Scrapy 给这个文件自动生成了如下的代码↓
我们利用编辑器打开 items.py 文件

import scrapyclass AppinnItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()pass

按照我们需要的数据标题、时间、作者、分数、正文,分别把他们叫做 title、time、author、score 和 content。于是把 items.py 文件里的代码改成这样↓

import scrapyclass Article(scrapy.Item):title = scrapy.Field()  # 标题time = scrapy.Field()   # 时间author = scrapy.Field()   # 作者score = scrapy.Field()  # 分数content = scrapy.Field()  # 内容

通过 scrapy.Field() 方法,我们定义出了所有需要的字段,这样就定义好了我们要的数据格式:一个叫做 Article 的 Item。Item 是一个和字典类似的东西,使用它而不用字典的理由就是:在爬取网页的时候常常出现数据缺失、内容错误之类的问题,使用 Item 可以更好的处理这些问题。

2、spiders 目录

spiders 目录里保存了我们创建的爬虫。

在命令行里执行下面的命令并回车,它会帮我们创建一个叫做 article 的爬虫,并且只爬取 www.appinn.com 下的网页↓

scrapy genspider article www.appinn.com


执行成功后可以看到在 spiders 目录里多出了一个 article.py,文件里有自动生成的代码↓

import scrapyclass ArticleSpider(scrapy.Spider):name = 'article'allowed_domains = ['www.appinn.com']start_urls = ['http://www.appinn.com/']def parse(self, response):pass

注意

Python爬虫深造篇(四)——Scrapy爬虫框架启动一个真正的项目相关推荐

  1. python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫

    在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...

  2. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...

    小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...

  3. python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目

    首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...

  4. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...

    Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...

  5. Python爬虫基础:安装Scrapy爬虫框架和创建Scrapy爬虫项目

    首先为了避免国外镜像不稳定,我们使用了清华大学的python库镜像:https://pypi.tuna.tsinghua.edu.cn/simple 1.安装scrapy 1.1.安装pywin32( ...

  6. Python网络爬虫之requests库Scrapy爬虫比较

    requests库Scrapy爬虫比较 相同点: 都可以进行页面请求和爬取,Python爬虫的两个重要技术路线 两者可用性都好,文档丰富,入门简单. 两者都没有处理JS,提交表单,应对验证码等功能(可 ...

  7. 阿里云后台运行python程序(后台运行scrapy爬虫)的方法

    1. 问题引入 通过Xshell工具连接远程阿里云服务器后,如何运行python程序呢?这个大家都知道,python命令啦. 举个栗子:通过Xshell在某个目录下输入命令:python test.p ...

  8. Python爬虫入门——3.7 Scrapy爬虫框架安装

    声明:参考资料<从零开始学Python网络爬虫 >作者:罗攀,蒋仟    机械工业出版社    ISBN: 9787111579991 参考资料<精通Python网络爬虫:核心技术. ...

  9. 爬虫基础篇之Scrapy抓取京东

    虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...

最新文章

  1. 步步为营-44-窗体之间传值--观察者模式
  2. Java8 详解Lambda表达式
  3. java队列转集合_Java集合 使用Queue
  4. 【CSS基础】实现 div 里的内容垂直水平居中
  5. Python 3.6学习笔记(一)
  6. java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)
  7. REVERSE-PRACTICE-BUUCTF-2
  8. HTTP Content-Disposition Explanation [ from MDN ]
  9. 红橙Darren视频笔记 筛选View 属性动画 Adapter模式 组合动画AnimatorSet 观察者模式(对比Android ListView) 练习
  10. UE3 iPhonePackager 工具
  11. 什么时候出来的_DNF手游官网正版什么时候出来?地下城手游上线日期分享
  12. COM编程之四 引用计数
  13. 信息系统项目的应急预案方案_【学习】环评、验收、排污许可证、应急预案,都应在项目什么阶段开展?...
  14. PHP特性整合(PHP5.X到PHP7.1.x)
  15. vuecli3 引入全局scss变量_利用scss公共库实现样式和业务组件解耦, 快速提高开发效率!...
  16. 怎么删除拨号连接,取消掉宽带拨号?
  17. 【二分查找】详细讲解(C语言折半查找)
  18. 巨坑:transport.TransportException:Cannot execute request on any known server
  19. 阿里巴巴python招聘_作为应届生,我在阿里巴巴的成功面试经历!
  20. Calendar(日历)

热门文章

  1. 如何获得hg38外显子的bed文件?
  2. oracle 安装oui 15038,SUSE Linux上的Oracle11g-x64-ent安装有很多检查错误
  3. python 美化ppt_用python做ppt服务用于导入图片
  4. LINUX 下设置优盘挂载点,拷贝U盘文件
  5. 安全防御 --- SSL VPN
  6. IOS resign error: dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
  7. 张亚勤:高科技人才管理的五个方程式
  8. Polya计数法总结 POJ24092154SGU282
  9. HDU1282 最简单的计算机
  10. 2021 年最受欢迎的 10 个刷题网站