Python爬虫深造篇(四)——Scrapy爬虫框架启动一个真正的项目
一、前情提要
经过前面的学习,我们初识了 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爬虫框架启动一个真正的项目相关推荐
- python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫
在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...
- python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...
- python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目
首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...
- linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...
Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...
- Python爬虫基础:安装Scrapy爬虫框架和创建Scrapy爬虫项目
首先为了避免国外镜像不稳定,我们使用了清华大学的python库镜像:https://pypi.tuna.tsinghua.edu.cn/simple 1.安装scrapy 1.1.安装pywin32( ...
- Python网络爬虫之requests库Scrapy爬虫比较
requests库Scrapy爬虫比较 相同点: 都可以进行页面请求和爬取,Python爬虫的两个重要技术路线 两者可用性都好,文档丰富,入门简单. 两者都没有处理JS,提交表单,应对验证码等功能(可 ...
- 阿里云后台运行python程序(后台运行scrapy爬虫)的方法
1. 问题引入 通过Xshell工具连接远程阿里云服务器后,如何运行python程序呢?这个大家都知道,python命令啦. 举个栗子:通过Xshell在某个目录下输入命令:python test.p ...
- Python爬虫入门——3.7 Scrapy爬虫框架安装
声明:参考资料<从零开始学Python网络爬虫 >作者:罗攀,蒋仟 机械工业出版社 ISBN: 9787111579991 参考资料<精通Python网络爬虫:核心技术. ...
- 爬虫基础篇之Scrapy抓取京东
虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...
最新文章
- 步步为营-44-窗体之间传值--观察者模式
- Java8 详解Lambda表达式
- java队列转集合_Java集合 使用Queue
- 【CSS基础】实现 div 里的内容垂直水平居中
- Python 3.6学习笔记(一)
- java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)
- REVERSE-PRACTICE-BUUCTF-2
- HTTP Content-Disposition Explanation [ from MDN ]
- 红橙Darren视频笔记 筛选View 属性动画 Adapter模式 组合动画AnimatorSet 观察者模式(对比Android ListView) 练习
- UE3 iPhonePackager 工具
- 什么时候出来的_DNF手游官网正版什么时候出来?地下城手游上线日期分享
- COM编程之四 引用计数
- 信息系统项目的应急预案方案_【学习】环评、验收、排污许可证、应急预案,都应在项目什么阶段开展?...
- PHP特性整合(PHP5.X到PHP7.1.x)
- vuecli3 引入全局scss变量_利用scss公共库实现样式和业务组件解耦, 快速提高开发效率!...
- 怎么删除拨号连接,取消掉宽带拨号?
- 【二分查找】详细讲解(C语言折半查找)
- 巨坑:transport.TransportException:Cannot execute request on any known server
- 阿里巴巴python招聘_作为应届生,我在阿里巴巴的成功面试经历!
- Calendar(日历)
热门文章
- 如何获得hg38外显子的bed文件?
- oracle 安装oui 15038,SUSE Linux上的Oracle11g-x64-ent安装有很多检查错误
- python 美化ppt_用python做ppt服务用于导入图片
- LINUX 下设置优盘挂载点,拷贝U盘文件
- 安全防御 --- SSL VPN
- IOS resign error: dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
- 张亚勤:高科技人才管理的五个方程式
- Polya计数法总结 POJ24092154SGU282
- HDU1282 最简单的计算机
- 2021 年最受欢迎的 10 个刷题网站