1、在任意系统下,可以使用 pip 安装 Scrapy

pip install scrapy/
确认安装成功
>>> import scrapy
>>> scrapy.version_info
(, , ) 可以看到 scrapy 的一些命令
$ scrapy

E:\data\job\job>scrapy
Scrapy 1.6.0 - project: job

Usage:
scrapy <command> [options] [args]

Available commands:
bench Run quick benchmark test
check Check spider contracts
crawl Run a spider
edit Edit spider
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
list List available spiders
parse Parse URL (using its spider) and print the results
runspider Run a self-contained spider (without creating a project)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy

Use "scrapy <command> -h" to see more info about a command

通过上面的两项检测,说明 Scrapy 安装成功了

2、创建一个 Scrapy 项目

  在shell中使用 scrapy startproject命令:

scrapy startproject job

  创建好的爬虫的项目目录文件如下所示

  (通常我们不需要手工创建 Spider 文件以及 Spider 类,可以使用 scrapy genspider <SPIDER_NAME> <DOMAIN>命令生成(根锯模板)它们,该命令的两个参数分别是 Spider 的名字和多要爬取的预(网站))

$ cd job
$ scrapy genspider books books.toscrape.com

运行后,scrapy genspider 命令创建了文件 job/spider/books.py,并在其中创建了一个BooksSpider 类,代码如下:

# -*-coding: utf- -*-
import scrapy cclass BooksSpider(scrapy.Spider): name = 'books'
allowed_domains = ['books.toscrape.com']
start_urls = ['http://books.toscrapy.com/'] def parse(self, response):
pass

1、分析页面

  (1)数据信息

  (2)链接信息

2、实现Spider

  实现爬虫的 Python 文件应位于 job/spiders 目录下,在该目录下新建文件 51job.py

  (1)提取数据

  (2)提取链接

3、对 Spider 的实现做简单的说明

  (1) name 属性

    一个 Scrapy 醒目中可能有多个爬虫,每个爬虫的 name 属性是其自身的唯一标示,在一个项目中不能有同名的爬虫,例如 取名为 “books”

  (2)start_url 属性

    一个爬虫总要从某个(或某些)页面开始爬取,我们成这样的页面为其实爬取点,start_url 属性用来设置一个爬虫的其实爬取点。比如:“http://books.toscraper.com”.

  (3)parse 方法

    当一个页面下载完毕之后,Scrapy 引擎会回调一个我们指定的页面解析函数(默认为 parse 方法)解析页面,一个页面解析韩式同常需要完成以下两个任务:
    <1> 提取页面中的数据 (使用 XPath 或者 CSS 选择器)

    <2> 提取页面中的链接,并产生对链接页面的下载请求。

  页面解析函数通常被实现为一个生成器函数,每一项从页面中提取的数据以及每一个链接页面的下载请求都由 yield 语句提交给 Scraoy 引擎

运行爬虫

在 shell 中执行 scrapy crawl <Spider_Name> 命令运行爬虫'books',并将爬取的数据存储到 csv 文件中:

scrapy crawl books -o books.csv

在进行页面分析时,除了之前使用过的 Chrome 开发者工具之外,另一种常用的工具是

scrapy shell <URL>

他使用户可以再交互式命令下操作一个 Scrapy 爬虫,通常我们使用该工具进行前期爬取实验,从而提高开发效率

Scrapy 常用的shell执行命令的更多相关文章

  1. expect 交互 之shell执行命令操作

    shell 执行命令操作 /usr/bin/expect -c " proc jiaohu {} { send_user expect_start expect { password { s ...

  2. 使用PsExec获取shell执行命令

    PsExec PsExec是pstools工具组套件的一部分,确成为了渗透利器,下载地址:点击这里下载 连接shell 我的Windows Server 2012默认打开域网络防火墙的时候,是不能连接 ...

  3. linux shell 执行命令顺序

    1.shell命令搜索顺序 在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的 ...

  4. Bash shell执行命令的优先级

    1.别名2.关键字:if.function.while .until等3.函数4.内置命令5.可执行程序或脚本 别关函内可 =-=-=-=-=Powered by Blogilo

  5. 在shell下执行命令的方法

    在shell下执行命令的方法 1. #!/bin/sh 语法:在shell.sh的开头写入 #!/bin/sh 一般的shell脚本就是这种用法.这种方法调用脚本开头的shell执行命令,子shell ...

  6. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误

    1:Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误,是因为jar包冲突了,所以对于和hadoop的jar包冲 ...

  7. UNIX环境编程学习笔记(22)——进程管理之system 函数执行命令行字符串

    lienhua342014-10-15 ISO C 定义了 system 函数,用于在程序中执行一个命令字符串.其声明如下, #include <stdlib.h> int system( ...

  8. 常用的shell命令整理

    工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {}   获取当前所在目录的名称 2.ps -ef|grep -w   ...

  9. 工作中常用的 Shell 命令及技巧

    调试 bash 脚本的技巧 加 -x 参数运行 bash 脚本时,会显示执行的语句 # 也可以在 demo.sh 中加上 set -x bash -x demo.sh 设置环境变量,然后通过如上方式运 ...

随机推荐

  1. 【CSS选择器】

    " 目录 一.介绍 二.语法 三.引入方式 1. 行内样式 2. 嵌入式 3. 外部样式 四.选择器 1. 基本选择器 2. 组合选择器 3. 属性选择器 4. 不常用选择器 5. 分组和嵌 ...

  2. python中getpass模块

    1 import getpass 2 name = input('请输入你的名字:') 3 passwd = getpass.getpass('请输入你的密码:') 4 print(name) 5 p ...

  3. Centos610安装MVN

    1.下载mav安装 下载免安装版上传linux cd /opt/maven mkdir repository cd apche-maven-3.3.9/conf vi settings.xml  设置 ...

  4. docker-install-v0.1-alpha

    Written by Zak Zhu docker-install-v0.1-alpha/ ├── inventory ├── roles │ └── docker │ ├── defaults │

  5. 页面弹窗toast和加载loading

    create-at 2019-04-04 都采用单例模式,原生js实现 兼容老版本浏览器内核,请将用es6语法的地方作修改 loading 加载 代码: 样式全部通过js创建style标签注入head ...

  6. Java AQS 的胡言乱语修正版

    前言 适合读者:3 年以上经验的同学 谈到并发编程,基本上都会想到JDK 的 JUC 工具包,它包含 锁,并发工具类,原子类,线程池,还有阻塞队列,这是从网上找的一个大致的知识体系. 相信这些工具读者 ...

  7. 2_2 3n+1问题

    猜想:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半.经过若干次这样的变换,一定会使n变为1.例如:3→10→5→16→8→4→2→1. 输入n,输出变换的次数.n< ...

  8. JAVA面向对象解决实际问题实例(一)

    某次战役中,为便于信息交互,我军侦察部门将此次战役的关键高地坐标设定为(x=0,y=0)并规定,每向东增加100米,x加1,每向北增加100米,y加1.同时,我军情报部门也破译了敌军向坦克发送的指挥信 ...

  9. 【SSM】Log4j 日志配置

    1.log4j.properties ### 配置根 ### # log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROL ...

  10. 【PAT甲级】1061 Dating (20 分)

    题意: 给出四组字符串,前两串中第一个位置相同且大小相等的大写字母(A~G)代表了周几,前两串中第二个位置相同且大小相等的大写字母或者数字(0~9,A~N)代表了几点,后两串中第一个位置相同且大小相等 ...