Scrapy框架----- Scrapy Shell

Scrapy Shell

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

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

启动Scrapy Shell

进入项目的根目录,执行下列命令来启动shell:

scrapy shell "http://www.itcast.cn/channel/teacher.shtml"

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列表

XPath表达式的例子及对应的含义:

/html/head/title: 选择<HTML>文档中 <head> 标签内的 <title> 元素
/html/head/title/text(): 选择上面提到的 <title> 元素的文字
//td: 选择所有的 <td> 元素
//div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素

尝试Selector

我们用腾讯社招的网站http://hr.tencent.com/position.php?&start=0#a举例:

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

# 返回 xpath选择器对象列表
response.xpath(‘//title‘)
[<Selector xpath=‘//title‘ data=u‘<title>\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058</title‘>]

# 使用 extract()方法返回 Unicode字符串列表
response.xpath(‘//title‘).extract()
[u‘<title>\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058</title>‘]

# 打印列表第一个元素,终端编码格式显示
print response.xpath(‘//title‘).extract()[0]
<title>职位搜索 | 社会招聘 | Tencent 腾讯招聘</title>

# 返回 xpath选择器对象列表
response.xpath(‘//title/text()‘)
<Selector xpath=‘//title/text()‘ data=u‘\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058‘>

# 返回列表第一个元素的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]
技术类

以后做数据提取的时候,可以把现在Scrapy Shell中测试,测试通过后再应用到代码中。

当然Scrapy Shell作用不仅仅如此,但是不属于我们课程重点,不做详细介绍。

官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/shell.html

原文地址:https://www.cnblogs.com/joshuazc/p/9791176.html

时间: 2024-11-13 13:57:38

Scrapy框架----- Scrapy Shell的相关文章

scrapy框架【shell使用】

scrapy shell scrapy shell是一个交互式shell,您可以在其中快速调试 scrape 代码,而不必运行spider.它本来是用来测试数据提取代码的,但实际上您可以使用它来测试任何类型的代码,因为它也是一个常规的Python shell. shell用于测试xpath或css表达式,并查看它们是如何工作的,以及它们从您试图抓取的网页中提取的数据.它允许您在编写spider时交互地测试表达式,而不必运行spider来测试每个更改. 一旦你熟悉了 Scrapy Shell,你就

Scrapy框架-scrapy框架架构详解

1.Scrapy框架介绍 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自己从零开始写的话,比较浪费时间.因此Scrapy把一些基础的东西封装好了,在他上面写爬虫可以变的更加的高效(爬取效率和开发效率).因此真正在公司里,一些上了量的爬虫,都是使用Scrapy框架来解决. 2.Scrapy架构图 流程图1: 流程图2: 3.Scrapy框架模块功能 Scrapy Engine(引擎):Scrapy

爬虫框架Scrapy之详解

Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便. Scrapy 使用了 Twisted['tw?st?d](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求. Scrapy架构图(绿线是数据流向): Scrapy

Requests爬虫和scrapy框架多线程爬虫

1.基于Requests和BeautifulSoup的单线程爬虫 1.1 BeautifulSoup用法总结 1. find,获取匹配的第一个标签 tag = soup.find('a') print(tag) tag = soup.find(name='a', attrs={'class': 'sister'}, recursive=True, text='Lacie') tag = soup.find(name='a', class_='sister', recursive=True, te

爬虫 (5)- Scrapy 框架简介与入门

Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便. Scrapy 使用了 Twisted['tw?st?d](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求. 制作 Scrapy 爬虫 一共需要4步: 新建项目 (

scrapy框架爬取豆瓣读书(1)

1.scrapy框架 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.它也提供了多种类型爬虫的基类,如BaseSpider.sitemap爬虫等,最新版本又提供了web2.0爬虫的支持. 主要组件: 2.快速开始 scrapy startproject douban cd到douban根目录

scrapy框架整理

0.安装scrapy框架 pip install scrapy 注:找不到的库,或者安装部分库报错,去python第三方库中找,很详细 https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 1.创建一个scrapy框架 scrapy startproject 项目名 2.使用scrapy框架爬虫的三个步骤 a.配置items文件,确定需要爬取的字段 b.配置pipeline文件,确定文件的存储方式,并在setting文件中配置管道文件 注:如

scrapy框架安装配置

scrapy框架 scrapy安装(win) 1.pip insatll wheel 2.下载合适的版本的twisted:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 3.安装twisted,到同一个目录,然后pip install 4.pip install pywin32 5.pip intstall scrapy 如果:在终端输入scrapy没有问题就是安装成功了 执行工程 scrapy crawl 工程名字 爬虫文件信息 # -*-

爬虫(十四):Scrapy框架(一) 初识Scrapy、第一个案例

1. Scrapy框架 Scrapy功能非常强大,爬取效率高,相关扩展组件多,可配置和可扩展程度非常高,它几乎可以应对所有反爬网站,是目前Python中使用最广泛的爬虫框架. 1.1 Scrapy介绍 1.1.1 架构介绍 Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求.我们只需要定制开发几个模块就可以轻松实现一个爬虫. 它可以分为如下的几个部分: Engine:引擎,处理整个系统的数据流处