简介
对网页解析时,不可避免需要使用选择器。本文主要介绍scrapy中的各类选择器,选择器其实就是scrapy内置selector对象:
- xpath
- css
他们的使用和之前介绍的CSS选择器类似,更多详细的介绍可以看下这里
本文介绍一个模糊的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
返回网页的源码
扫描下方二维码,及时获取更多互联网求职面经、java、python、爬虫、大数据等技术,和海量资料分享:
公众号菜鸟名企梦
后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务;
公众号菜鸟名企梦
后台发送“资料”:即可领取5T精品学习资料、java面试考点和java面经总结,以及几十个java、大数据项目,资料很全,你想找的几乎都有
网友评论