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标签内的值
  • 响应对象公开 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
      
  • 如果需要,可以使用 Selector 直接。从文本构建:

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

2.使用选择器

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

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

response.xpath('//title/text()') #结果:[<Selector xpath='//title/text()' data='Example website'>]

第二步:获取文本内容

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

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

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

案例:

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

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

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

案例:

response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s*(.*)')

scrapy框架选择器相关推荐

  1. 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器

    一.Scrapy shell scrapy shell的作用是用于调试,在项目目录下输入scrapy shell start_urls (start_urls:目标url)得到下列信息: scrapy ...

  2. python 爬虫 学习笔记(一)Scrapy框架入门

    沉迷于通过高效算法及经典数据结构来优化程序的时候并不理解,为什么多线程可以优化爬虫运行速度?原来是程序特性所决定的:传统算法的程序复杂度主要来源于计算,但网络程序的计算时间可以忽略不计,网络程序所面临 ...

  3. python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用

    大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy.Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装. Scrapy的安装 Scrapy的安装是很麻烦的,对于一 ...

  4. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...

    原博文 2017-07-17 16:39 − 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pytho ...

  5. 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】

    本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击[python爬虫]分类专栏进行倒序观看: [重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收 ...

  6. Scrapy 框架入门

    一.介绍 ​ Scrapy 是一个基于Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间耦合较低,扩展性和灵活强,是目前 Python 中使用最广泛的爬虫框架. ...

  7. 第42讲:scrapy框架的基本使用

    接下来介绍一个简单的项目,完成一遍 Scrapy 抓取流程.通过这个过程,我们可以对 Scrapy 的基本用法和原理有大体了解. 本节目标 本节要完成的任务如下. 创建一个 Scrapy 项目. 创建 ...

  8. request body 里丢东西了_26. Scrapy 框架-模拟登录-Request、Response

    1. Scrapy-Request和Response(请求和响应) Scrapy的Request和Response对象用于爬网网站. 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达 ...

  9. Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解

    这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider ...

最新文章

  1. 办公计算机培训方案,计算机办公软件应用培训教学计划规划方案.docx
  2. Attribute在.net编程中的应用
  3. 修改mysql的root密码
  4. Bzoj2440 完全平方数
  5. DCM、PLL、PMCD、MMCM的区别与联系?
  6. 2020年12月大学英语四六级英语作文预测(XDF王江涛)
  7. 2021-01-27 CentOS系统将UTC时间修改为CST时间方法
  8. 示例 Demo 工程和 API 参考链接
  9. websevice中runtime modeler error: Wrapper class com.ws.jaxws.Add is not found问题的解决办法
  10. 解决浏览器中点击input输入框时,placeholder的值不消失的方法
  11. native service
  12. oppoa5降级教程_OPPO A5官方出厂rom系统刷机包下载_卡刷升级包降级回退包
  13. 计算机NIC配置,在主计算机或 VM 上创建新的 NIC 团队
  14. 判断OS版本的几个方法
  15. imx6 通过移植XRM117x(SPI转串口)对Linux中的SPI驱动框架进行分析
  16. 深度学习系统框架的演进趋势
  17. 墨者学院-登录密码重置漏洞分析溯源
  18. 分享个人收集或整理的word中常用的vba代码
  19. 编码器verilog实现
  20. ICO文件缩略图显示错误

热门文章

  1. UI设计规范系统搭建的必要性
  2. 环境监测技术中关于网络时间校准问题
  3. 2020第一季度OKR
  4. 高斯杯全国大学生数学建模挑战赛
  5. python最短路径问题_Python调用gurobi来解决最短路径问题,python,求解
  6. 如果足球场没有边界,那将会怎样?(转)
  7. 男生都是如何折磨自己的女朋友的?
  8. 华为鸿蒙其他国产手机也可以用吗,鸿蒙系统8月正式开源: 不仅华为手机能用, 其它国产手机也能用...
  9. 计算机进化量子攻略,《超进化物语》量子巨龙怎么打 量子巨龙打发解析
  10. iOS11 持续定位