【零基础学爬虫】scrapy中选择器详解

简介

对网页解析时,不可避免需要使用选择器。本文主要介绍scrapy中的各类选择器,选择器其实就是scrapy内置selector对象:

本文介绍一个模糊的css查询:

<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>
First, let’s ope

如何选择出上面html中href属性值中包含image关键词的a标签中的src属性值?即

  • 选出 a标签
  • 选出href值包含image的a标签
  • 获取img标签
  • 获取src属性的值
    文章使用scrapy shell调试:

上面html页面网址为:
https://docs.scrapy.org/en/latest/_static/selectors-sample1.html

执行命令进入shell环境:
scrapy shell https://docs.scrapy.org/en/latest/_static/selectors-sample1.html

执行下面命令即可选中:href属性值包含image的a标签中的img标签中的src属性的值:

response.css('a[href=image] img::attr(src)’).extract()*

输出结果:

另外,scrapy还支持正则表达式的匹配,有时使用css不太好匹配,比如:匹配a标签中

**Name:**之后的内容:

**response.css(‘a::text’).extract()**不太好用

使用正则表达式可以比较方便的提取“”之后的内容

response.css(‘a::text’).re(‘Name:(.*)’)


下面指令就仅仅返回第一个匹配结果

response.css(‘a::text’).re_first(‘Name:(.*)’)


另外,还有几个比较好用的命令:

  • view
    它会帮你请求一个url,并把document下载下来保存成一个文件,并自动使用浏览器打开下载的网页,打开response的预览
    scrapy fview http://www.baidu.com
    fetch
    scrapy fetch http://www.baidu.com
    返回网页的源码

扫描下方二维码,及时获取更多互联网求职面经javapython爬虫大数据等技术,和海量资料分享:公众号后台回复“csdn”即可免费领取【csdn】和【百度文库】下载服务;公众号后台回复“资料”:即可领取5T精品学习资料java面试考点java面经总结,以及几十个java、大数据项目资料很全,你想找的几乎都有
扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值