Scrapy Shell

news/2024/7/19 12:12:29 标签: python, shell, 爬虫

18.1  Scrapy Shell

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

18.2.1 启动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 的包头。

例一:在 in 行输入 response.body,结果如下:

 

例二:在 in 行输入 response.headers,结果如下:

 

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

 

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

18.2.2 Selectors选择器

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

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

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

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

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

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

 

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

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

/html/head/title: 表示选择<HTML>文档中 <head> 标签内的 <title> 元素。

/html/head/title/text(): 表示选择上面提到的 <title> 元素的文字。

//td: 表示选择所有的 <td> 元素。

//div[@class="mine"]: 表示选择所有具有 class="mine" 属性的 div 元素。

18.2.4 Selector 在Scrapy Shell 中使用

例如:XX社招的网站:http://hr.tencent.com/position.php?&start=0

第一步:进入项目的根目录。

 

第二步:scrapy shell 命令启动。

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

 

第三步:相关的 Selector 使用操作。

# 返回 xpath 选择器对象列表。

response.xpath('//title')

 

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

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

 

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

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

<title>职位搜索 | 社会招聘 | Tencent 腾讯招聘</title>

 

# 返回 xpath 选择器对象列表。

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

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

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

 

# 按终端编码格式显示。

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

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

 

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

 

在使用 Scrapy 爬虫框架提取数据,首先要明确需要提取数据的字段和在 HTML网页中的结构。然后在 Scrapy Shell中测试,测试通过后再应用到代码中

18.2.5 Scrapy Shell 小结

我们这里使用 Scrapy Shell 主要是用来调试爬虫代码, Scrapy Shell 的作用很强大,这里只是简单的介绍了一下,需要更深入的学习,可以看官方文档详细介绍 Scrapy Shell ,或者相关的书籍。

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

转载于:https://www.cnblogs.com/tinghai8/p/9552616.html


http://www.niftyadmin.cn/n/1494755.html

相关文章

Codeforces Goodbye 2018

Goodbye 2018 可能是我太菜考试的时候出不了$E$可能是我太菜考试的时候调不出$F$所以转化为手速场之后手速还上不去.jpgA 模拟题意... #include <cstdio> #include <algorithm> #include <cmath> using namespace std; int main() {int y,b,r,ans1<<30…

openlayers 6【四】地图图层Layers详解

文章目录1. 什么是图层&#xff1f;&#xff1f;&#xff1f;1.1 线状图层1.2 点状图层1.3 面状图层2. 图层存在一个或者多个3. Layers 的常见属性4. Layers 各种图层及图层类型4.1 Graticule 地图上覆盖的网格标尺图层4.2 HeatMap&#xff0c;热力图层4.3 Vector&#xff0c;矢…

Spring集成MyBatis的使用-使用Mapper映射器

Spring集成MyBatis使用 前面复习MyBatis时&#xff0c;发现在测试时&#xff0c;需要手动创建sqlSessionFactory&#xff0c;Spring将帮忙自动创建sqlSessionFactory&#xff0c;并且将自动扫描Mapper映射器 (1)集成步骤 step1 导包: spring-webmvc, mybatis, mybatis-spring, …

从零搭建 jenkins 自动部署 java maven项目

第一次接触jenkins自动部署 maven项目&#xff0c;从度娘谷哥搜刮N多资料&#xff0c;经过一个多星期的&#xff08;部署删除&#xff09;✖️N 过程&#xff0c;终于成功部署完成&#xff0c;现将整合过的部署过程傻瓜式列出&#xff08;真的挺傻瓜的了[捂脸]&#xff09;&…

github hint: Updates were rejected because the tip of your current branch is behind【git push失败解决方法】

今天用github把本地仓库的东西push到远程仓库时报错&#xff1a; 然后百度翻译了一下&#xff0c;大概意思是分支过期&#xff0c;被拒绝上传push 使用强制刷新命令 git push -f origin master 上传就行了。

Maven安装与配置(转)

今天又安装了下maven&#xff0c;参照的是下面的blog&#xff0c;步骤&#xff0c;图片都很清楚明白&#xff0c;转一下。 by 光焱 https://www.cnblogs.com/eagle6688/p/7838224.html 顺便补一下maven的官网地址&#xff1a;http://mvnrepository.com/ 在Search中搜索需要的de…

05-使用jQuery操作input的value值

【转】05-使用jQuery操作input的value值 表单控件是我们的重中之重&#xff0c;因为一旦牵扯到数据交互&#xff0c;离不开form表单的使用&#xff0c;比如用户的注册登录功能等 那么通过上节知识点我们了解到&#xff0c;我们在使用jquery方法操作表单控件的方法&#xff1a; …

openlayers6【五】地图图层数据来源 source 详解

文章目录1. 写在前面2. source 数据源都有哪些类型2. source 用法实例2.1 ol.source.Vector 的使用&#xff08;矢量图层的数据来源&#xff09;2.2 ol.source.Image的使用&#xff08;提供单一的图片地图&#xff09;3. 写在后面1. 写在前面 在 openlayers 6【二】vue 初始化…