# 命令行输入:scrapy shell +链接,会自动请求url,得到的相应默认为response,开启命令行交互模式
scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html In [1]: response#response为默认相应
Out[1]: <200 https://doc.scrapy.org/en/latest/_static/selectors-sample1.html> In [2]: response.text#response.text相应的源代码
# 标准结构图如下:
response.text = '''
<html>
<head>
<base href='http://example.com/' />
<title>Example website</title>
</head>
<body>
<div id='images'>
<a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
<a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
<a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
<a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a>
<a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a>
</div>
</body>
</html>
'''
# 1:使用选择器response.selector.xpath()/response.selector.css()
In [5]: response.selector.xpath('//title/text()').extract_first()
Out[5]: 'Example website' In [6]: response.selector.css('title::text').extract_first()
Out[6]: 'Example website'
# 2:使用选择器也可以简写为:response.xpath() / response.css() In [9]: response.css('title::text')
Out[9]: [<Selector xpath='descendant-or-self::title/text()' data='Example website'>] In [10]: response.xpath('//title/text()')
Out[10]: [<Selector xpath='//title/text()' data='Example website'>] # 3:以上可知使用.xpath() .css()返回仍然是一个选择器,若要提取里面的数据,可以用extract()提取全部,extract_first提取首个
In [7]: response.xpath('//title/text()').extract_first()
Out[7]: 'Example website' In [8]: response.css('title::text').extract_first()
Out[8]: 'Example website' # 4:可以循环进行选择
# 获取div标签里面,id = 'images'的元素, 然后继续查找img标签属性为src的内容,最终提取出来
# 就是说,包含关系用中括号[],从属关系用斜杠 /
In [14]: response.xpath("//div[@id='images']").css('img::attr(src)').extract()
Out[14]:
['image1_thumb.jpg',
'image2_thumb.jpg',
'image3_thumb.jpg',
'image4_thumb.jpg',
'image5_thumb.jpg'] # extract_first还有default属性,如果查找不到对应的元素即返回default指定的值
In [16]: response.xpath("//div[@id='images']").css('img::attr(src)').extract_first(default='')
Out[16]: 'image1_thumb.jpg' # 查找a标签下,属性为href的元素,提取出来
In [18]: response.xpath('//a/@href').extract()
Out[18]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] In [19]: response.css('a::attr(href)').extract()
Out[19]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] # 5:查找标签的文本
In [20]: response.xpath('//a/text()').extract()
Out[20]:
['Name: My image 1 ',
'Name: My image 2 ',
'Name: My image 3 ',
'Name: My image 4 ',
'Name: My image 5 '] In [21]: response.css('a::text').extract()
Out[21]:
['Name: My image 1 ',
'Name: My image 2 ',
'Name: My image 3 ',
'Name: My image 4 ',
'Name: My image 5 '] # 6:选取标签的属性
In [34]: response.css('a::attr(href)').extract()
Out[34]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] In [39]: response.xpath('//a/@href').extract()
Out[39]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] # 查找属性名称为href 包含image的标签的属性 In [24]: response.xpath('//a[contains(@href,"image")]/@href').extract()
Out[24]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] In [25]: response.css('a[href*=image]::attr(href)').extract()
Out[25]: ['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html'] # 查找a标签里面属性名为href,包含image,包含img,属性为src的属性
In [27]: response.xpath('//a[contains(@href,"image")]/img/@src').extract()
Out[27]:
['image1_thumb.jpg',
'image2_thumb.jpg',
'image3_thumb.jpg',
'image4_thumb.jpg',
'image5_thumb.jpg'] In [28]: response.css('a[href*=image] img::attr(src)').extract()
Out[28]:
['image1_thumb.jpg',
'image2_thumb.jpg',
'image3_thumb.jpg',
'image4_thumb.jpg',
'image5_thumb.jpg'] # 7:可配合正则表达式,re_first表示取第一个满足正则表达式的
In [30]: response.css('a::text').re('Name\:(.*)')
Out[30]:
[' My image 1 ',
' My image 2 ',
' My image 3 ',
' My image 4 ',
' My image 5 '] In [31]: response.css('a::text').re_first('Name\:(.*)')
Out[31]: ' My image 1 ' In [32]: response.css('a::text').re_first('Name\:(.*)').strip()#去除空格
Out[32]: 'My image 1'

scrapy选择器主要用法的更多相关文章

  1. Scrapy选择器的用法

    1.构造选择器: >>> response = HtmlResponse(url='http://example.com', body=body) >>> Sele ...

  2. Scrapy框架中选择器的用法【转】

    Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法 请给作者点赞 --> 原文链接 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpa ...

  3. scrapy框架中选择器的用法

    scrapy框架中选择器的用法 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中 ...

  4. CSS中:before和:after选择器的用法

    在线演示这次给大家带来的是对话气泡效果,主要是演示了 :before / :after 和 border 的用法,赶快来围观吧. 阅读原文:CSS中:before和:after选择器的用法

  5. Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法

    Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...

  6. Python之爬虫(十六) Scrapy框架中选择器的用法

    Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...

  7. Scrapy中选择器的用法

    官方文档:https://doc.scrapy.org/en/latest/topics/selectors.html Using selectors Constructing selectors R ...

  8. 4-----Scrapy框架中选择器的用法

    Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...

  9. scrapy选择器归纳

    python 爬虫: srcrapy框架xpath和css选择器语法 Xpath基本语法 一.常用的路径表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 //div ...

随机推荐

  1. JS基础四

    1.函数是一组可以随时随地运行的语句. 函数是 ECMAScript 的核心. 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 2.闭包,指的是 ...

  2. MySQL数据库学习二 MSQL安装和配置

    2.1 下载和安装MySQL软件 2.1.1 基于客户端/服务器(C/S)的数据库管理系统 服务器:MySQL数据库管理系统 客户端:操作MySQL服务器 2.1.2 MySQL的各种版本 社区版(C ...

  3. CSS以及JQuery总是忽略掉的小问题

    1.自动居中一列布局需要设置 margin 左右值设置为 auto,而且一定要设置width为一个定值. 2.css3: 3.修改时间SQL(格式) update table set timeColu ...

  4. 使用ADO.NET查询和操作数据

    使用ADO.NET查询和操作数据 StringBuilder类: 用来定义可变字符串StringBuilder sb = new StringBuilder("");//追加字符串 ...

  5. 十分钟释疑Oracle中“小表超慢”之谜(SQL调优/SQL优化)

    前几天,一个用户找到我,说查一个小表的时候非常慢,我问有多慢,他说最快也得半个小时才能出结果,有时干脆不出结果,我说小表多大,他说就几十兆,有点疑惑,让他帮忙获取了相关信息,一看就明白了,原来所谓的小 ...

  6. 利用jmeter做一个简单的性能测试并进行参数化设置

    1.新增一个线程组,并在下面添加基本原件,包括:监听器.http请求默认值和一个事务控制器 在http请求默认值中填写 ip 地址和端口号,协议类型默认为http 2.添加代理服务器,以便之后进行录制 ...

  7. C++ STL常用容器基本用法汇总

    1.vector 包含头文件#include<vector> 使用命名域using namespace std 定义元素类型为T的vector vector<T> vec 增: ...

  8. alpha-咸鱼冲刺day8

    一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在进行页面整合.然后还有注册跟登陆的功能完善-- 四,问题困难 数据流程大概是搞定了.不过语法不是很熟悉,然后还有各种判定. ...

  9. C语言-学生博客汇总

    一.学生个人博客汇总 五班 学号 姓名 博客地址 4079 马天琦 http://www.cnblogs.com/simalang/ 4080 马宇欣 http://www.cnblogs.com/m ...

  10. Bate敏捷冲刺每日报告--day3

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...