零基础-一起学爬虫

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

2019-04-23  本文已影响0人  大菜鸟_

简介

对网页解析时,不可避免需要使用选择器。本文主要介绍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属性值?即

上面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:(.*)')

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


扫描下方二维码,及时获取更多互联网求职面经javapython爬虫大数据等技术,和海量资料分享
公众号菜鸟名企梦后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务;
公众号菜鸟名企梦后台发送“资料”:即可领取5T精品学习资料java面试考点java面经总结,以及几十个java、大数据项目资料很全,你想找的几乎都有

扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)
上一篇 下一篇

猜你喜欢

热点阅读