Scrapy学习——基础讲解

技术选型

  • 采用基于twisted的scrapy框架

框架特点

  • 异步io且基于c的scrapy性能比beautifulsoup好很多
  • scrapy方便扩展并提供了css xpath selector 比较方便使用

scrapy使用

  • 创建scrapy工程
scrapy startproject ArtcleSpider(自定义名称)
  • 以basic模板创建基础工程
cd ArtcleSpider
scrapy genspider example example.com

http://tj.offcn.com/html/2017/08/76573.html

  • 进入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元素

《Scrapy学习——基础讲解》 image.png

    原文作者:旅行路上的吕行
    原文地址: https://www.jianshu.com/p/e1e2662fbcfc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞