三分钟学会Scrapy选择器(selectors)
来源:互联网 发布:office官方卸载软件 编辑:程序博客网 时间:2024/05/17 07:56
(文中图片看不清楚,可以点击阅读原文,阅读我在知乎专栏同步发送的文章)
入门级爬虫总体分为两步:下载网页、提取数据
提取数据是我们的终极目的,提取数据的方法很多。最原始的是正则表达式,即使正则表达式是那么的不人性化,但是不可否认他的强大之处。当然在Python的世界里,它允许你不会使用正则表达式,他给你提供了另一种十分简洁的方法:lxml,它通过层层节点来提取数据。但是这仿佛没有让程序员们停下脚步来,不久更加便捷的BeautifulSoup诞生了,BeautifulSoup会把html拆解成对象处理,全篇转成字典和数组进行处理,操作更加傻瓜。
带来了更大的好处,必然会牺牲一些东西,BeautifulSoup在大大降低提取难度的时候也降低了提取的速度,而这个时候lxml(通过特定的XPath或CSS表达式来选择HTML文件中的某个部分)开始逐渐被大部分希望速度和便捷度并存的程序员所接受。Scrapy就选择了lxml作为它的选择器的基础,Scrapy选择器构建于lxml上,这意味着它在速度和解析准确性上非常相似。
Scrapy的构造器是以文字或TextResponse构造的Selector实例,它会根据输入的类型自动选择最优化的分析方法,而你不需要去考虑里面具体的实现方法。
Scrapy的选择器功能强于lxml与BeautifulSoup,在自由度方面,也高于两者,我们以blog.csdn.net为例,使用Scrapy选择器提取内容。
1、使用.xpath()提取内容
2、使用.css()提取内容
主要内容都写在代码注释中,请配合注释、代码以及输出仔细阅读,如果还对Scrapy的选择器不太了解,可以仔细阅读Scrapy的官方文档。
下面使一些官方文档给出的当你使用Scrapy中的选择器XPath时候可能会有用的一些意见,这些建议是建立在ScrapingHub’s blog ,如果你对XPath还不熟悉,请仔细阅读这篇文章:XPath tutorial.
3、有关于XPath的一些建议
1)使用.代替.//text()
因为.//text()返回的是一个节点集合(set),当一个节点集合(node-set)转强制换成string的时候,它仅仅会返回集合中的第一个元素。
2)注意//node[1]和(//node)[1]的区别
这种问题,熟悉Python的人都应该知道。
//node[1]选择所有位于第一个子节点位置的node节点
(//node)[1]选择整个文档中的node节点,并且返回每个node节点的第一个节点
3)使用class查找时优先考虑CSS
因为一个元素可能包含很多的CSS样式,使用XPath中的class选择法很复杂,而使用CSS看起来更加易读。
(文中图片看不清楚,可以点击阅读原文,阅读我在知乎专栏同步发送的文章)
- 三分钟学会Scrapy选择器(selectors)
- Scrapy爬虫入门教程五 Selectors(选择器)
- Scrapy学习笔记(5)--Selectors 选择器
- python3 scrapy css选择器(Selectors) 用法
- Scrapy 小技巧:选择器(Selectors)怎么写
- scrapy爬虫之selectors
- scrapy的selectors
- MooTools Selectors(选择器)
- jQuery选择器(Selectors)
- 选择器(Selectors)
- MooTools Selectors(选择器)
- CSS4前瞻:选择器(Selectors)
- 选择器(Selectors)
- stylus之选择器(Selectors)
- jQuery - Selectors选择器 - checked选中
- jQuery-Selectors(选择器)的使用
- CSS 派生选择器 contextual selectors
- 爬虫Scrapy-03Shell和Selectors
- 创业公司的技术Leader,在100offer寻找怎样的工作机会?
- 网易云音乐每日歌曲推荐的原理是什么?
- 百度挂了……
- 知乎2016年度赞同/收藏最多的回答 —— 编程话题
- 深挖:知乎起诉的微博营销号「大神说」
- 三分钟学会Scrapy选择器(selectors)
- 反转:那个说自己老公一毛钱股份没拿到还觉得他最牛逼的谁
- 初探密码破译:Metropolis-Hastings算法破解密文
- 终身学习?不懂这个方法就是白学!
- 你好,我想请教一个问题
- 最近:南京与深圳
- 我做了个决定
- 不交智商税,如何判断一场知乎live的质量?
- 如何选择一门编程语言?