• scrapy框架选择器


    scrapy框架选择器

    Scrapy有自己的数据提取机制。它们被称为选择器,因为它们“选择”HTML文档的某些部分 XPath 或 CSS 表达。

    • XPath是一种在XML文档中选择节点的语言,也可以与HTML一起使用。

    • CSS是用于将样式应用于HTML文档的语言。它定义选择器,将这些样式与特定的HTML元素相关联。

    参考文献:scrapy官方文档-选择器https://docs.scrapy.org/en/latest/topics/selectors.html

    一、使用选择器

    1.构建选择器

    response.selector.xpath('//span/text()').get() #提取span标签内的值
    
    • 1
    • 响应对象公开 Selector实例对 .selector 属性

    selector是一个很薄的包装 parsel library;这个包装器的目的是提供更好的与slapy响应对象的集成。

    parsel 是一个独立的网页爬取库,可以使用没有 Scrapy 。它使用 lxml库位于引擎盖下,并在LXML API之上实现一个简单的API。这意味着scrapy选择器在速度和解析精度方面与lxml非常相似。

    • 使用xpath和css查询响应非常常见,因此响应中还包含两个快捷方式:

      • response.xpath()

      • response.css()

        response.xpath('//span/text()').get() 	#xpath
        response.css('span::text').get()		#css
        
        • 1
        • 2
    • 如果需要,可以使用 Selector 直接。从文本构建:

      from scrapy.selector import Selector
      body = 'good'
      Selector(text=body).xpath('//span/text()').get()
      
      • 1
      • 2
      • 3

    2.使用选择器

    以scrapy官方文档为例示例:https://docs.scrapy.org/en/latest/_static/selectors-sample1.html

    第一步:获取页面节点元素

    response.xpath('//title/text()') #结果:[]
    
    • 1

    第二步:获取文本内容

    response.xpath('//title/text()').getall() 	#['Example website']
    response.xpath('//title/text()').get()		#'Example website'
    
    • 1
    • 2
    • **.get()**总是返回一个结果;如果有多个匹配项,则返回第一个匹配项的内容;如果没有匹配项,则返回None。

    • **.getall()**返回包含所有结果的列表。

    • 除了使用例如**@srcXPath之外,还可以使用.attrib**a的属性查询属性Selector

    案例:

    response.css('img').attrib['src'] 	#获取图片链接
    
    • 1

    3.将选择器与正则表达式一起使用

    Selector还提供了**.re()一种使用正则表达式提取数据的方法。但是,与使用.xpath()**或 **.css()方法不同,它.re()返回字符串列表。因此,您无法构造嵌套.re()**调用。

    案例:

    response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s*(.*)') 
    
    • 1
  • 相关阅读:
    Java内存使用异常导致CPU100%原因(线上JVM排查之二)
    SoviChart数据可视化:散点图(Scatter plot)
    数据集笔记:华盛顿共享单车OD数据
    112. 路径总和
    《二叉树刷题计划》——相同的树、对称二叉树、另一棵树的子树
    【opencv】传统图像识别:hog+svm行人识别实战
    网络安全(黑客)自学
    haproxy
    Spring Boot 中使用 Poi-tl 渲染数据并生成 Word 文档
    Docker入门的亿点点学习
  • 原文地址:https://blog.csdn.net/zhongjianboy/article/details/126776588