php spider shell,ScrapyShell使用

Scrapy Shell

Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据。

如果安装了 IPython ,Scrapy终端将使用 IPython (替代标准Python终端)。 IPython 终端与其他相比更为强大,提供智能的自动补全,高亮输出,及其他特性。(推荐安装IPython)

Scrapy Shell根据下载的页面会自动创建一些方便使用的对象,例如 Response 对象,以及 Selector 对象 (对HTML及XML内容)。

当shell载入后,将得到一个包含response数据的本地 response 变量,输入 response.body将输出response的包体,输出 response.headers 可以看到response的包头。

输入 response.selector 时, 将获取到一个response 初始化的类 Selector 的对象,此时可以通过使用 response.selector.xpath()或response.selector.css() 来对 response 进行查询。

Scrapy也提供了一些快捷方式, 例如 response.xpath()或response.css()同样可以生效。

Selectors选择器

Scrapy Selectors 内置 XPath 和 CSS Selector 表达式机制。

Selector有四个基本的方法,最常用的还是xpath:

xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表

extract(): 序列化该节点为Unicode字符串并返回list

css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表,语法同 BeautifulSoup4

re(): 根据传入的正则表达式对数据进行提取,返回Unicode字符串list列表

使用案例:

# 启动

scrapy shell "http://hr.tencent.com/position.php?&start=0#a"

![Uploading scrapyshell1_605828.png . . .]

# 返回 xpath选择器对象列表

response.xpath('//title')

[\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058]

# 使用 extract()方法返回 Unicode字符串列表

response.xpath('//title').extract()

[u'

\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058']

# 打印列表第一个元素,终端编码格式显示

print response.xpath('//title').extract()[0]

职位搜索 | 社会招聘 | Tencent 腾讯招聘

# 返回 xpath选择器对象列表

response.xpath('//title/text()')

# 返回列表第一个元素的Unicode字符串

response.xpath('//title/text()')[0].extract()

u'\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058'

# 按终端编码格式显示

print response.xpath('//title/text()')[0].extract()

职位搜索 | 社会招聘 | Tencent 腾讯招聘

response.xpath('//*[@class="even"]')

职位名称:

print site[0].xpath('./td[1]/a/text()').extract()[0]

TEG15-运营开发工程师(深圳)

职位名称详情页:

print site[0].xpath('./td[1]/a/@href').extract()[0]

position_detail.php?id=20744&keywords=&tid=0&lid=0

职位类别:

print site[0].xpath('./td[2]/text()').extract()[0]

技术类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

69 个经典 Spring 面试题和答案

Spring 概述 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。使用Spring框架…

高性能MySql

1、索引是对DB优化最有效的方式 varchar(10)定义的是字符的个数,如果是utf-8的话,最大是3X10个字节 二、索引类型 1、MySql的索引是在存储引擎层实现的,各个存储引擎的的索引方式也是不同的 2、B-Tree索引 MyISAM索引通过数据的物理位置引用被…

Java Swing井字游戏

大家好! 哇,自从我在这里发布了东西以来已经有一段时间了! 我必须说我真的很想写东西,而且我保证我不会再陷入“作家的障碍”。 希望 ..最近两个月发生了很多事情,我有很多话要说。 但是在这篇文章中,我只是…

Java小青蛙跳台街,算法-青蛙跳台阶详解

/*[跳台阶][题目]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。[解析]与斐波那契数列的求解过程类似。典型的动态规划问题。对于第 n 级台阶,我们可以从第 n-1 级台阶一步到达,也可以从第 n-2 级…

apache服务器配置Net的实践

前置: 在xp系统中,打补丁之类或啥子操作引起或多或少的问题,最终导致iis不能使用; 不想装系统...忍着... 最近突发事件导致,需要摸一下apache服务器处理,好吧,那就搜索下吧..... 目标&#xff1…

TestNG或JUnit

多年以来,无论何时使用Java代码进行单元测试,我始终会回到TestNG。 每当我拿起TestNG时,人们都问我为什么要继续使用TestNG,尤其是默认开发环境(例如Eclipse或Maven)提供的JUnit时。 继续进行同样的战斗&am…

event php,PHP event 事件机制

/** PHP 事件机制*/class baseClass{private $_e;public function __set($name,$value){if( strncasecmp($name,"on",2) 0 ){if(!isset($this->_e[$name]))$this->_e[$name] array();return array_push($this->_e[$name] , $value);}}public function __g…

Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组...

版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/。 目录(?)[] 一:什么是静态内存什么又是动态内存呢? 静态内存:是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始…

Visual Studio-C#-20160411

函数的四个要素包括:名称,输入,输出,加工 注释的方式://只注释一行;/**/注释一段区域; namespace ConsoleApplication6 ---------//命名空间{ class Program ---------------------------//类…

配置MyBatis 3

MyBatis是一个非常流行且也是最有效的SQL映射框架。 MyBatis可用于Java和.net语言。 MyBatis并不是Hibernate的真正替代品,但是我们可以使用该框架来减少MyBatis提供的高效和高性能的数据库相关代码。 本教程将向您展示使用数据库配置MyBatis 3的步骤。 MyBatis 3支…

php获取src,PHP读取文件

本文概述PHP提供了各种功能来从文件读取数据。有多种功能允许你读取所有文件数据, 逐行读取数据以及逐字符读取数据。下面提供了可用的PHP文件读取功能。fread()fgets()fgetc()PHP读取文件-fread()PHP fread()函数用于读取文件的数据。它需要两个参数:文件资源和文件…

HDOJ(HDU) 1406 完数

Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6123;28124714。 本题的任务是判断两个正整数之间完数的个数。 Input 输入数据包…

Allegro padstack

在ALLEGRO中,建立PCB封装是一件挺复杂的事,而要建立FOOTPRINT,首先要有一个PAD,所以就要新建PADSTACK。 焊盘可以分两种,表贴焊盘和通孔焊盘,表贴焊盘结构相对简单,下面首先分析表贴焊盘的成分&…

java中datetime类型转换,Java中日期格式和其他类型转换详解

涉及的核心类:Date类、SimpleDateFormat类、Calendar类一、Date型与long型Date型转换为long型Date date new Date();//取得当前时间Date类型long date2long date.getTime();//Date转longlong型转换为Date型long cur System.currentTimeMills();//取得当前时间lon…

GWT MVP变得简单

GWT Model-View-Presenter是用于大规模应用程序开发的设计模式。 它源于MVC,它在视图和逻辑之间进行划分,并有助于创建结构良好,易于测试的代码。 为了帮助像我这样的懒惰开发人员,我研究了如何减少使用声明式UI时要编写的类和接口…

php如何编写通信协议,定制通讯协议

## 如何定制协议实际上制定自己的协议是比较简单的事情。简单的协议一般包含两部分:* 区分数据边界的标识* 数据格式定义## 一个例子### 协议定义这里假设区分数据边界的标识为换行符"\n"(注意请求数据本身内部不能包含换行符),数据格式为Json&#xff0c…

今年计划要看的书全部备齐

上个月购买的书《今年计划看的书其中几本》 http://www.cnblogs.com/insus/p/5325513.html 昨天购买的书回来了,今年计划要看的书全部备齐。《MongoDB》,《深入理解Bootstarp》和《ASP.NETSignalR编程实践》…… 转载于:https://www.cnblogs.com/in…

Codevs 2756 树上的路径

2756 树上的路径 时间限制: 3 s    空间限制: 128000 KB    题目等级 : 大师 Master题目描述 Description给出一棵树&#xff0c;求出最小的k&#xff0c;使得&#xff0c;且在树中存在路径P&#xff0c;使得k> S 且 k <E. &#xff08;k为路径P上的边的权值和&a…

图形教程

众所周知&#xff0c;我们可以借助Java库制作游戏&#xff0c;这些库为我们提供制作游戏所需的图形。 因此&#xff0c;今天我将开始一个关于Java图形的非常新的部分。 我之前曾发表过有关如何制作所得税计算器的文章 。 首先要满足一些先决条件&#xff1a; -您应该对Java语法…

文件上传预览

<fieldset><legend>使用readAsDataUrl()方法预览图片</legend><input type"file" name"fileUpload" id"fileUpload" onchange"filePrevImg(this.files);" multiple"true" /><ul id"prevUpl…