资讯专栏INFORMATION COLUMN

Scrapy Shell

HmyBmny / 2927人阅读

摘要:如果安装了,终端将使用替代标准终端。终端与其他相比更为强大,提供智能的自动补全,高亮输出,及其他特性。也提供了一些快捷方式例如或同样可以生效如之前的案例。当然作用不仅仅如此,但是不属于我们课程重点,不做详细介绍。

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/text(): 选择上面提到的 <title> 元素的文字
//td: 选择所有的 <td> 元素
//div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素
</pre>
<b>尝试Selector</b>
<p>我们用腾讯社招的网站http://hr.tencent.com/positio...举例:</p>
<pre># 启动
scrapy shell "http://hr.tencent.com/position.php?&start=0#a"

# 返回 xpath选择器对象列表
response.xpath("//title")
[<Selector xpath="//title" data=u"<title>u804cu4f4du641cu7d22 | u793eu4f1au62dbu8058 | Tencent u817eu8bafu62dbu8058</title">]

# 使用 extract()方法返回 Unicode字符串列表
response.xpath("//title").extract()
[u"<title>u804cu4f4du641cu7d22 | u793eu4f1au62dbu8058 | Tencent u817eu8bafu62dbu8058"]

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

# 返回 xpath选择器对象列表
response.xpath("//title/text()")


# 返回列表第一个元素的Unicode字符串
response.xpath("//title/text()")[0].extract()
u"u804cu4f4du641cu7d22 | u793eu4f1au62dbu8058 | Tencent u817eu8bafu62dbu8058"

# 按终端编码格式显示
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...
Spider][3]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41383.html

相关文章

  • scrapy入门教程3:scrapyshell命令

    摘要:用例运行爬虫命令基本语法是否需要项目存在当然是不需要咯貌似这个命令是不依托一个项目而直接运行一个爬虫的命令。用例我终于写完了,喜欢的就收藏推荐一下吧,这样我就会更有动力写新的教程了,哇哈哈 0. 基本环境说明 本文截图及运行环境均在Win8上实现(是的,我放假回家了,家里的机器是win8的没有办法),但基本步骤与win 7环境基本相同。(应该把~)ps:我后来换了台win7的电脑,所...

    zhongmeizhi 评论0 收藏0
  • scrapy入门教程——爬取豆瓣电影Top250!

    摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...

    senntyou 评论0 收藏0
  • scrapy提升篇之配置

    摘要:提升篇之配置增加并发并发是指同时处理的的数量。其有全局限制和局部每个网站的限制。使用级别来报告这些信息。在进行通用爬取时并不需要,搜索引擎则忽略。禁止能减少使用率及爬虫在内存中记录的踪迹,提高性能。 scrapy提升篇之配置 增加并发 并发是指同时处理的request的数量。其有全局限制和局部(每个网站)的限制。Scrapy默认的全局并发限制对同时爬取大量网站的情况并不适用,因此您需要...

    刘永祥 评论0 收藏0
  • 10、web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令

    摘要:负责处理被提取出来的。典型的处理有清理验证及持久化例如存取到数据库知识库项目的设置文件实现自定义爬虫的目录中间件是在引擎及之间的特定钩子,处理的输入和输出及。 【百度云搜索:http://www.bdyss.com】 【搜网盘:http://www.swpan.cn】 Scrapy框架安装 1、首先,终端执行命令升级pip: python -m pip install --upgrad...

    OnlyMyRailgun 评论0 收藏0
  • Scrapy基本用法

    安装scrapy 不同操作系统安装操作不同,可以直接看官方文档Install Scrapy 创建一个项目 在命令行输入 scrapy startproject tutorial 进入项目目录创建一个spider cd tutorial scrapy genspider quotes domain.com import scrapy class QuotesSpider(scrapy.Spider...

    URLOS 评论0 收藏0

发表评论

0条评论

HmyBmny

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<