美文网首页
Scrapy学习——基础讲解

Scrapy学习——基础讲解

作者: 旅行路上的吕行 | 来源:发表于2017-08-16 18:36 被阅读0次

    技术选型

    • 采用基于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元素
    image.png

    相关文章

      网友评论

          本文标题:Scrapy学习——基础讲解

          本文链接:https://www.haomeiwen.com/subject/kyjvrxtx.html