笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

选择器

发布者: 笨鸟自学网

当你抓取网页时,你需要执行的最常见的任务是从HTML源代码中提取数据。有几个库可以实现这一点,例如:

  • BeautifulSoup 在Python程序员中是一个非常流行的Web抓取库,它基于HTML代码的结构构造了一个Python对象,并且能够很好地处理错误的标记,但是它有一个缺点:速度慢。

    • lxml 是一个XML解析库(它也解析HTML),使用基于 ElementTree . (LXML不是Python标准库的一部分。)

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

    XPath 是一种在XML文档中选择节点的语言,也可以与HTML一起使用。 CSS 是用于将样式应用于HTML文档的语言。它定义选择器,将这些样式与特定的HTML元素相关联。

    注解

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

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

    使用选择器

    构造选择器

    响应对象公开一个 Selector 实例位于 .selector 属性:

    >>> response.selector.xpath('//span/text()').get()
    'good'
    

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

    >>> response.xpath('//span/text()').get()
    'good'
    >>> response.css('span::text').get()
    'good'
    

    粗糙的选择器是 Selector 通过传递以下任一参数构造的类 TextResponse 字符串形式的对象或标记(在 text 参数)。

    通常不需要手动构造垃圾选择器: response 对象在spider回调中可用,因此在大多数情况下使用它更方便 response.css() 和 response.xpath() 捷径。通过使用 response.selector 或者这些快捷方式之一,您还可以确保响应主体只解析一次。

    但如果需要,可以使用 Selector 直接。从文本构建:

    >>> from scrapy.selector import Selector
    >>> body = '<html><body><span>good</span></body></html>'
    >>> Selector(text=body).xpath('//span/text()').get()
    'good'
    

    从响应构造- HtmlResponse 是其中之一 TextResponse 子类:

    >>> from scrapy.selector import Selector
    >>> from scrapy.http import HtmlResponse
    >>> response = HtmlResponse(url='http://example.com', body=body)
    >>> Selector(response=response).xpath('//span/text()').get()
    'good'
    

    Selector 根据输入类型自动选择最佳的解析规则(XML对HTML)。


上一篇:蜘蛛下一篇:项目

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-7-27 19:04 , Processed in 0.041640 second(s), 17 queries .

© 2001-2020

返回顶部