技术选型
- 采用基于twisted的scrapy框架
框架特点
- 异步io且基于c的scrapy性能比beautifulsoup好很多
- scrapy方便扩展并提供了css xpath selector 比较方便使用
scrapy使用
- 创建scrapy工程
scrapy startproject ArtcleSpider(自定义名称)
- 以basic模板创建基础工程
cd ArtcleSpider
scrapy genspider example example.com
- 进入scrapy调式模式
scrapy shell xxxxx('网址')
进入调式模式之后,可以给一个变量赋值
eg:
title = response.xpath('.// *[ @ id = 'post-92238'] / div[1] / h1/text()')
title
#打印title获得
[<Selector xpath=".// *[ @ id = 'post-92238'] / div[1] / h1/text()" data='CSS技巧:逐帧动画抖动解决方案'>]
title.extract()得到一个数组
提取数组
title.extract()[0]
xpath
-
特点:
xpath使用路径表达式,支持w3c标准,包含标准函数库 -
语法:
主语
article 选取所有article元素的所有子节点
/article 选取根元素acticle
article/a 选取所有属于article的子元素的a元素
//div 获取所有div子元素(不论出现在文档任何地方)、
article//div 选取所有属于article元素的后代的div元素,不管出现在article之下的任何位置
//@class 选取所有名为class的属性
谓语
/article/div[1] 选取属于article子元素的第一个div元素
/article/div[last()] 选取属于article子元素的最后一个div元素
/article/div[last()-1] 选取属于article子元素的倒数第二个div元素
//div[@lang] 选取所有拥有lang属性的div元素
//div[@lang='eng'] 选取所有lang属性为eng的div元素
其他
/div/* 选取属于div元素的所有节点
//* 选取所有元素
//div[@*] 选取所有带属性的title元素
//div/a|//div/p 选取所有div元素的a和p元素
//span|//ul 选取文档中的span和ul元素
article/div/p|//span 选取所有属于article元素的div元素的p元素,以及文档中的所有span元素
- 通过浏览器获取xpath
chrome浏览器下,打开开发者模式
找到对应的DOM元素
网友评论