scrapy学习——选择器

之前已经学习过HTML页面解析的一些内容,其中介绍了选择器的相关知识,接下来深入的学习选择器。

Scrapy的选择器是基于lxml,也就是说二者在原理和速度上是一致的。

构造选择器

Scrapy selector是以 文字(text) TextResponse 构造的Selector 实例。其根据输入的类型自动选择最优的分析方法(XML vs HTML):

>>> from scrapy.selector import Selector
>>> from scrapy.http import HtmlResponse
以文字构造:

>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').extract()
[u'good']
以response构造:
>>> response = HtmlResponse(url='http://example.com', body=body)
>>> Selector(response=response).xpath('//span/text()').extract()
[u'good']

使用选择器

以官方文档中的网页为例:http://doc.scrapy.org/en/latest/_static/selectors-sample1.html

这里是它的HTML源码:

<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>
非常简单的一个页面。

通过scrapy shell对这个页面进行测试。


四种写法都是选择title标签中的文字。1.使用xpath来选择;2和3使用Scrapy提供的方法response.xpath()和response.css(),4使用的是css3伪类来选择文字或属性节点的。

嵌套选择器

选择器方法( .xpath() or.css() )返回相同类型的选择器列表,因此你也可以对这些选择器调用选择器方法。下面是一个例子:

正则表达式使用选择器

字符匹配相关内容一定少不了正则表达式。选择器也可以使用正则来提取数据。

对字符串使用re()方法来书写正则。

使用相对XPaths

xpath的语法参见http://www.w3school.com.cn/xpath/

相对XPaths与相对路径有点相似,都是以“.”点前缀开始路径的书写。

使用EXSLT扩展

因建于 lxml 之上, Scrapy选择器也支持一些 EXSLT 扩展,可以在XPath表达式中使用这些预先制定的命名空间。













  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值