• Scrapy学习-2-xpath&css使用


    xpath使用
    简介
      xpath使用路径表达式在xml和html中进行导航
     
    语法
    body    # 选取所有body元素的所有子节点
    
    /html   # 选取根元素
    
    body/a  # 选取所有属于body的子元素的a元素
    
    //div   # 选取所有dic子元素(任意地方)
    
    body//div   # 选取所有属于body元素的后代的div元素(body下任意位置)
    
    //@class    # 选取所有名为class的属性
    
    /body/div[1]    # 选取属于body子元素的第一个div元素
    
    /body/div[last()]   # 选取属于body子元素的最后一个div元素
    
    //div[@lang]    # 选取所有拥有lang属性的div元素
    
    //div[@lang='eng']  # 选取所有lang属性为eng的div元素
    
    /div/*  # 获取属于div元素的所有子节点
    
    //* # 选取所有元素
    
    //div[@*]   # 获取所有带属性的div元素
    
    /div/a|//div/p  # 获取所有div的子元素a和p
    
    //span|ul   # 选取文档中的span和ul元素
    
    body/div/p|//span  # 选取所有body下的div下的p元素和所有span元素
    
    //span[contains(@class, 'vote-post-up')]    # 寻找所有属性为class的值中包含vote-post-up的span标签
    xpath对象
      response.xpath()返回的对象可以被无限调用,执行xpath方法继续搜索html内容
     
    实例
    def parse(self, response):
        title = response.xpath('//div[@class="entry-header"]/h1/text()').extract_first("")
        create_date = response.xpath("//p[@class='entry-meta-hide-on-mobile']/text()").extract()[0].strip().replace("·","").strip()
        praise_nums = response.xpath("//span[contains(@class, 'vote-post-up')]/h10/text()").extract()[0]
        fav_nums = response.xpath("//span[contains(@class, 'bookmark-btn')]/text()").extract()[0]
    css选择器
    简介
      根据标签元素间的层叠关系和元素本身属性获取我们想要的标签
     
    语法
    *   # 选择所有节点
    
    #container  # 选择id为container的节点
    
    .container  # 选取所有class包含container的节点
    
    .container.hearder  # 选取所有class同时包含container和hearder的节点
    
    li a    # 选取所有li下的所有a节点
    
    ul + p  # 选择ul后面的第一个p元素
    
    div#container > ul # 选取id为container的div的第一个ul子元素
    
    ul ~ p # 选取与ul相邻的所有p元素
    
    a[title]    # 选取所有title属性的a元素
    
    a[href="http://www.baidu.com"]  # 选取所有href属性为http://www.baidu.com的a元素
    
    a[href*="baidu"]    # 选取href属性包含baidu的a元素
    
    a[href^="http"]     # 选取href属性以http开头的a元素
    
    a[href$=".html"]     # 选取href属性以html结尾的a元素
    
    input[type=radio]:checked   # 选取选中的radio的元素
    
    div:not(#container) # 选取所有id非container的div属性
    
    li:nth-child(3)     # 选取第三个li元素
    
    tr:nth-child(2n)    # 选取偶数位tr元素
    使用方式和xpath相似
    def parse(self, response):
        title = response.css(".entry-header h1::text").extract()[0]
        create_date = response.css("p.entry-meta-hide-on-mobile::text").extract()[0].strip().replace("·","").strip()
        praise_nums = response.css(".vote-post-up h10::text").extract()[0]
        fav_nums = response.css(".bookmark-btn::text").extract()[0]
     
     
  • 相关阅读:
    Forms身份验证
    常见的js图片或内轮换效果
    模仿select选择框
    基于jquery的js幻灯片类
    js弹出幕布遮罩层
    css那些事
    选择珠宝js业务逻辑源码
    aspnet帐号密码改了会出问题
    用rails做了个书评排行网站,欢迎光临!
    转发:为什么函数式编程至关重要
  • 原文地址:https://www.cnblogs.com/cq146637/p/9053144.html
Copyright © 2020-2023  润新知