Python爬虫从入门到放弃(十三)之 Scrapy框架的命令行详解

这篇文章主要是对的scrapy命令行使用的一个介绍

创建爬虫项目

scrapy startproject 项目名 例子如下:

localhost:spider zhaofan$ scrapy startproject test1
New Scrapy project 'test1', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', created in:
    /Users/zhaofan/Documents/python_project/spider/test1

You can start your first spider with:
    cd test1
    scrapy genspider example example.com
localhost:spider zhaofan$

这个时候爬虫的目录结构就已经创建完成了,目录结构如下:

|____scrapy.cfg
|____test1
| |______init__.py
| |____items.py
| |____middlewares.py
| |____pipelines.py
| |____settings.py
| |____spiders
| | |______init__.py

接着我们按照提示可以生成一个spider,这里以百度作为例子,生成spider的命令格式为; scrapy genspider 爬虫名字 爬虫的网址

localhost:test1 zhaofan$ scrapy genspider baiduSpider baidu.com
Created spider 'baiduSpider' using template 'basic' in module:
  test1.spiders.baiduSpider
localhost:test1 zhaofan$ 

关于命令详细使用

命令的使用范围

这里的命令分为全局的命令和项目的命令,全局的命令表示可以在任何地方使用,而项目的命令只能在项目目录下使用

全局的命令有: startproject genspider settings runspider shell fetch view version

项目命令有: crawl check list edit parse bench

startproject 这个命令没什么过多的用法,就是在创建爬虫项目的时候用

genspider 用于生成爬虫,这里scrapy提供给我们不同的几种模板生成spider,默认用的是basic,我们可以通过命令查看所有的模板

localhost:test1 zhaofan$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed
localhost:test1 zhaofan$ 

当我们创建的时候可以指定模板,不指定默认用的basic,如果想要指定模板则通过 scrapy genspider -t 模板名字

localhost:test1 zhaofan$ scrapy genspider -t crawl zhihuspider zhihu.com
Created spider 'zhihuspider' using template 'crawl' in module:
  test1.spiders.zhihuspider
localhost:test1 zhaofan$ 

crawl

这个是用去启动spider爬虫格式为: scrapy crawl 爬虫名字 这里需要注意这里的爬虫名字和通过scrapy genspider 生成爬虫的名字是一致的

check 用于检查代码是否有错误,scrapy check

list scrapy list列出所有可用的爬虫

fetch scrapy fetch url地址 该命令会通过scrapy downloader 讲网页的源代码下载下来并显示出来

这里有一些参数: --nolog 不打印日志 --headers 打印响应头信息 --no-redirect 不做跳转

view scrapy view url地址 该命令会讲网页document内容下载下来,并且在浏览器显示出来

因为现在很多网站的数据都是通过ajax请求来加载的,这个时候直接通过requests请求是无法获取我们想要的数据,所以这个view命令可以帮助我们很好的判断

shell 这是一个命令行交互模式 通过scrapy shell url地址进入交互模式 这里我么可以通过css选择器以及xpath选择器获取我们想要的内容(xpath以及css选择的用法会在下个文章中详细说明),例如我们通过scrapy shell http://www.baidu.com

这里最后给我们返回一个response,这里的response就和我们通requests请求网页获取的数据是相同的。 view(response)会直接在浏览器显示结果 response.text 获取网页的文本 下图是css选择器的一个简单用法

settings 获取当前的配置信息 通过scrapy settings -h可以获取这个命令的所有帮助信息

localhost:jobboleSpider zhaofan$ scrapy settings -h
Usage
=====
  scrapy settings [options]

Get settings values

Options
=======
--help, -h              show this help message and exit
--get=SETTING           print raw setting value
--getbool=SETTING       print setting value, interpreted as a boolean
--getint=SETTING        print setting value, interpreted as an integer
--getfloat=SETTING      print setting value, interpreted as a float
--getlist=SETTING       print setting value, interpreted as a list

Global Options
--------------
--logfile=FILE          log file. if omitted stderr will be used
--loglevel=LEVEL, -L LEVEL
                        log level (default: DEBUG)
--nolog                 disable logging completely
--profile=FILE          write python cProfile stats to FILE
--pidfile=FILE          write process ID to FILE
--set=NAME=VALUE, -s NAME=VALUE
                        set/override setting (may be repeated)
--pdb                   enable pdb on failure

拿一个例子进行简单的演示:(这里是我的这个项目的settings配置文件中配置了数据库的相关信息,可以通过这种方式获取,如果没有获取的则为None)

localhost:jobboleSpider zhaofan$ scrapy settings --get=MYSQL_HOST
192.168.1.18
localhost:jobboleSpider zhaofan$ 

runspider 这个和通过crawl启动爬虫不同,这里是scrapy runspider 爬虫文件名称 所有的爬虫文件都是在项目目录下的spiders文件夹中

version 查看版本信息,并查看依赖库的信息

localhost:~ zhaofan$ scrapy version
Scrapy 1.3.2
localhost:~ zhaofan$ scrapy version -v
Scrapy    : 1.3.2
lxml      : 3.7.3.0
libxml2   : 2.9.4
cssselect : 1.0.1
parsel    : 1.1.0
w3lib     : 1.17.0
Twisted   : 17.1.0
Python    : 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) - [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
pyOpenSSL : 16.2.0 (OpenSSL 1.0.2k  26 Jan 2017)
Platform  : Darwin-16.6.0-x86_64-i386-64bit

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

dedecms后台左侧菜单500错误怎么处理

  前面dedecms后台左侧菜单空白不显示怎么处理,但有些网友还是反应说不能显示,提示500错误,这可能是iis配置或apache设置不正确有关,一般是正常的...

2515
来自专栏抠抠空间

DropZone(文件上传插件)

1820
来自专栏xingoo, 一个梦想做发明家的程序员

如何在Eclipse中添加Tomcat的jar包

右键项目工程,点击Java Build Path ? 点击Add Library,选择Server Runtime ? 选择Tomcat版本 image.png...

1757
来自专栏PHP实战技术

ThinkPHP邮箱验证

Thinkphp用户注册使用邮箱验证的功能实现! 小伙伴平时在用户注册的时候,是否为邮箱验证的功能所困扰,下面思梦PHP就为大家带来了这个案例! 首先数据表的结...

3749
来自专栏信安之路

为Nmap添砖加瓦

Nmap作为一款优秀的端口扫描器,被所有渗透测试人员当作工作中必不可少的辅助工具,它不仅支持多种扫描方式,还支持添加漏洞测试脚本,在强大的lua脚本支持下,使得...

520
来自专栏逸鹏说道

用Python、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台的两种发布方式)

平时经常用定时提醒来提高工作效率,到了Linux。。。。蒙圈了,以前C#写的不能跨平台啊,于是就有了这篇文章~(有些人喜欢用番茄工作法,这个算是个福利了)

873
来自专栏北京马哥教育

4个Linux服务器监控工具

下面是我想呈现给你的4个强大的监控工具。 htop – 交互式进程查看器 你可能知道在机器上查看实时进程的标准工具top。如果不知道,请运行$ top看看,运行...

2609
来自专栏守望轩

Visual Studio 2008 每日提示(二十四)

#231、如何找到最后一次设置的环境保存的位置? 原文链接:Did you know… How to find what development settin...

3607
来自专栏Web 开发

ST3内网安装插件手札

去ST的官网下载最新版(Sublime Text 3),免费用户会不时有弹窗,不过不影响使用。

800
来自专栏Petrichor的专栏

python爬虫: 从 指定路径 爬取 文件

672

扫码关注云+社区