引言

我们之前介绍了Beautiful Soup、pyquery以及正则表达式来提取网页数据,这确实十分方便。而Scrapy还提供了自己的数据提取方法,即Selector(选择器)。Selector是基于lxml来构建的,支持Xpath选择器、CSS选择器以及正则表达式,功能全面,解析速度和准确度非常高。本节我们将介绍Selector的用法。

直接使用

Selector是一个可以独立使用的模块。我们可以直接利用Selector这个类来构建一个选择器对象,然后调用它的相关方法如xpath( )、css( )等来提取数据。

例如,针对一段HTML代码,我们可以用如下方式构建Selector对象来提取数据:

运行结果如下:

我们在这里没有在Scrapy框架中运行,而是把Scrapy中的Selector单独拿出来使用了,构建的时候传入text参数,就生成了一个Selector选择器对象,然后就可以像前面我们所用的Scrapy中的解析方式一样,调用xpath( )、css( )等方法来提取了。

在这里我们查找的是源代码中的title中的文本,在Xpath选择器最后加text( )方法就可以实现文本的提取了。

以上内容就是Selector的直接使用方法。同Beautiful Soup等库类似,Selector其实也是强大的网页解析库。如果方便的话,我们也可以在其他项目中直接使用Selector来提取数据。

接下来,我们用实例来详细讲解Selector的用法。

Scrapy shell

由于Selector主要是与Scrapy结合使用,如Scrapy的回调函数中的参数response直接调用xpath( )或者css( )方法来提取数据,所以在这里我们借助Scrapy shell来模拟Scrapy请求的过程,来讲解相关的提取方法。

我们用官方文档的一个样例界面来作为我们的演示:

接着我们就可以开启Scrapy shell,在命令行输入如下命令:

scrapy shell + 网址

这样我们就进入到了scrapy shell模式。这个过程其实是,Scrapy发起了一次请求,请求的URL就是刚才命令行下输入的URL,然后把一些可操作的变量传递给我们,如request、response等,如下所示:

我们可以在命令行模型下输入命令调用对象的一些操作方法,回车之后实时显示结果。这与Python命令行交互模式是类似的。

接下来,演示的实例都将页面的源码作为分析目标,页面源码如下所示:

python css selector_Python爬虫之Selector的用法相关推荐

  1. python bs4模块_python爬虫之Beautifulsoup模块用法详解

    什么是beautifulsoup: 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.(官方) beautifulsoup是 ...

  2. Python之网络爬虫完全教程

    [Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去 ...

  3. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  4. 教你用python制作一个爬虫软件,城市二手房信息一览无余。

    近年来随着我国二手房市场的逐渐放开,进入市场的二手房数量不断增加,二手房交易规模不断扩大,市场规模也在不断增长.数据显示,截至2018年末,我国累计二手房交易金额已经超过30万亿元:2019年我国二手 ...

  5. Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

    前言 嗨喽,大家好,这里是魔王~ [课题]: Python零基础爬虫之回车桌面壁纸 [课题介绍]: 壁纸不应该只是一张图片,它应该是一门哲学 回车桌面网100000张无水印,高分辨率,电脑桌面壁纸, ...

  6. python简单网站爬虫-爬取北京7天最高、最低气温

    python简单网站爬虫-爬取北京7天最高.最低气温 前置操作: 1.待爬取网站: 北京天气的网址: http://www.weather.com.cn/weather1d/101010100.sht ...

  7. python语言if语句-Python入门教程之if语句的用法

    这篇文章主要介绍了Python入门教程之if语句的用法,是Python入门的基础知识,需要的朋友可以参考下 OK分享完毕!需要Python资料的可以加QQ群:832339352 进群免费领取下面资料! ...

  8. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

    1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...

  9. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

    在现阶段大数据的时代中,想要实现对数据的获取和分析,要先具备足够的数据源,网络爬虫技术就为其数据获取提供了良好的条件,且还能够实现对数据源的目的性采集. 在网络爬虫技术应用中,Python 脚本语言的 ...

最新文章

  1. JAVA String format 方法使用介绍
  2. xadmin 更改后台一级目录名称
  3. python学习软件-python软件学习从入门到精通
  4. stm32f405xx.h头文件的问题Undefined symbol IS_TIM_BREAK_INSTANCE
  5. 2016-2017 Central Europe Regional Contest Hangar Hurdles 克鲁斯卡尔重构树 + 建图
  6. P4564 [CTSC2018]假面(期望)
  7. 听说IT人的目标都是成为架构师,那么请收下这份架构养成计划
  8. Initializing Java Tooling 30% 停住不动了
  9. SQL SERVER将多行数据合并成一行(转载)
  10. 十、MySQL的应用大全
  11. (JButton) e.getSource();是什么意思
  12. 文献阅读2019-Computer-aided diagnosis system for breast ultrasound images using deep learning
  13. 手游联运平台是怎样开发的?
  14. python 图片验证码
  15. 云ERP的创新到底在哪?
  16. Adobe Photoshop CS5如何调出标尺和网格
  17. 【已解决】如何用Python执行终端命令cmd(使用suprocess.run,并获取到stderror)
  18. <Android开发> Android vold - 第二篇 vold 的main()函数简介
  19. 金融类考试有什么公式汇总?
  20. 音频视频转换隐私政策

热门文章

  1. 台积电砸7500亿强攻5nm
  2. c++ fstream用法
  3. 运维常说的 5个9、4个9、3个9 的可靠性,到底是什么???
  4. Spring+Quartz实现定时执行任务的配置
  5. 设计模式(2)策略模式 (模式讲解+应用)
  6. 如何成为个好Java程序员
  7. 第七章 脚本参数的传递
  8. 十进制网络,你也可以
  9. 构建高并发高可用安全的IT系统-高并发部分
  10. c/s 自动升级(WebService)