博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scrapy之Selectors
阅读量:5217 次
发布时间:2019-06-14

本文共 1873 字,大约阅读时间需要 6 分钟。

 

练习url:

一 获取文本值

  xpath

In [18]: response.selector.xpath('//title/text()').extract_first(default='')Out[18]: 'Example website'

  css

In [19]: response.selector.css('title::text').extract_first(default='')Out[19]: 'Example website'

  注:可以省略写成:response.xpath()

二 获取属性值

  xpath

In [23]: response.selector.xpath('//base/@href').extract_first()Out[23]: 'http://example.com/'

  css 

In [24]: response.selector.css('base::attr(href)').extract_first()Out[24]: 'http://example.com/'

  注: 可以省略写成:response.css

三 xpath,css嵌套使用

  因为css,xpath返回的是 SelectorList 实例,所有可以嵌套便捷的使用。

  ps:获取属性,xpath,@已经实现, 并不需要 /text()

In [21]: response.selector.css('img').xpath('@src').extract()Out[21]:['image1_thumb.jpg', 'image2_thumb.jpg', 'image3_thumb.jpg', 'image4_thumb.jpg', 'image5_thumb.jpg']

 

四 .re()

  .re()

  .re_first()

  ps :返回的是unicode构成的列表,所以,不能嵌套使用 .re()

In [1]: response.selector.css('div > p:nth-of-type(2)::text').extract()Out[1]: ['333xxx']In [2]: response.selector.css('div > p:nth-of-type(2)::text').extract_first()Out[2]: '333xxx'In [3]: response.selector.css('div > p:nth-of-type(2)::text').re_first('\w+')Out[3]: '333xxx'In [4]: response.selector.css('div > p:nth-of-type(2)::text').re_first('[A-Za-z]+')Out[4]: 'xxx'In [5]: response.selector.css('div > p:nth-of-type(2)::text').re('[A-Za-z]+')Out[5]: ['xxx']

五 关于Xpath的相对路径查找的注意

  查找div标签下p标签

    

11

222

333

  错误做法:

In [4]: divs = response.selector.xpath('//div')In [5]: for p in divs.xpath('//p'):   ...:     print(p.extract())   ...:

11

222

333

  正确做法 1:

In [6]: divs = response.selector.css('div')In [7]: for p in divs.xpath('.//p'):   ...:     print(p.extract())   ...:   ...:

222

333

  正确做法 2:

In [8]: divs = response.selector.css('div')In [9]: for p in divs.xpath('p'):   ...:     print(p.extract())   ...:   ...:   ...:

222

333

 

转载于:https://www.cnblogs.com/654321cc/p/8874540.html

你可能感兴趣的文章
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
UNIX基础知识之输入和输出
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
对称加密和非对称加密
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
图像处理中双线性插值
查看>>
RobHess的SIFT代码解析之RANSAC
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
java中内部类的讲解
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>