网页内容解析(Scrapy)

1.Scrapy选择器介绍

       当我们取得了网页的response之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,python从网页中提取数据的包很多,常用的有下面的几个:

  • a.BeautifulSoup
  •        它基于HTML代码的结构来构造一个Python对象, 对不良标记的处理也非常合理,但是速度上有所欠缺。
  1. b.lxml   
  2.        是一个基于 ElementTree (不是Python标准库的一部分)的python化的XML解析库(也可以解析HTML)。

    你可以在scrapy中使用任意你熟悉的网页数据提取工具,但是,scrapy本身也为我们提供了一套提取数据的机制,我们称之为选择器(seletors),他们通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。XPath 是一门用来在XML文件中选择节点的语言,也可以用在HTML上。 CSS 是一门将HTML文档样式化的语言。选择器由它定义,并与特定的HTML元素的样式相关连。

  3. Scrapy选择器构建于 lxml 库之上,这意味着它们在速度和解析准确性上非常相似。下面我们来了解scrapy选择器。

  4. 2.使用Scrapy选择器

  5.         scrapy中调用选择器的方法非常的简单,下面我们从实例中进行学习。

    1.        以豆瓣电影 Top 250页面信息作为例子,演示使用选择器抓取数据,下图是Top 250页面的html信息,我们下面就是抓取电影名,演员等信息,电影评分,评价人数。如下图,是Top 250页面的html信息       

    2. 2.1 XPath表达式

    3.        XPath是一门在xml文档中查找信息的语言,它可用来在xml文档中对元素和属性进行遍历。XPath表达式中符号的含义见下表

    4. 表达式

      描述

      /        

      从根节点选取

      // 

      选择所有匹配的节点,而不考虑它们的位置

      .   

      选取当前节点

      ..

      选取当前节点的父节点

      @

      选取属性

      *

      匹配任何元素节点

      @*

      匹配任何属性节点

      Node()

      匹配任何类型的节点

    5. 2.2 使用Scrapy选择器的xpath()方法解析豆瓣电影网页中的内容

    6. xpath路径的使用可以分为下面的三步:

    7. 1)页面分析

    8. 2)复制xpath

    9. 3) 粘贴到代码中

    10. 打印如下信息,则表示成功获取到1部电影的名称

    11. 如果不想打印其他日志信息,则可执行命令:scrapy crawl douban_spider --nolog

    12. 如果想获取页面其他电影名称,则需要修改xpath路径

    13. 2.3 css表达式

    14.  
    15. 2.4 使用Scrapy选择器的css()方法解析豆瓣电影网页中的内容

    16. 选择器的使用可以分为下面的三步:

    17. 1)页面分析

    18. 2)复制选择器

    19. 3) 粘贴到代码中

    20. 修改方法与xpath类似,将li的[1]去掉,增加::text获取标签中的文本,增加extract()方法提取真实的原文数据。

    21. 注意:.xpath() 及 .css() 方法返回一个类 SelectorList 的实例, 它是一个新选择器的列表,就是说,你依然可以使用里面的元素进行向下提取,因为它还是一个选择器,为了提取真实的原文数据,我们需要调用 .extract()。如果想要提取到第一个匹配到的元素, 可以调用.extract_first()。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值