Selector选择器的详细介绍

在上一篇文章中为各位小伙伴简单的介绍了Selector,直接导入的方法就可以使用。这篇文章主要是Scrapy Shell和Xpath选择器为大家带来更加详细的使用方法。

scrapy shell

我们可以借助scrapy shell来模拟请求过程,然后把一些可以操作的变量传递回来,比如:resquest、response等。

PS C:\Users\admin\Desktop> scrapy shell https://www.baidu.com --nolog
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x00000142EEF861F0>
[s]   item       {}
[s]   request    <GET https://www.baidu.com>
[s]   response   <200 https://www.baidu.com>
[s]   settings   <scrapy.settings.Settings object at 0x00000142EEF864C0>
[s]   spider     <DefaultSpider 'default' at 0x142ef446400>
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser
In [1]:

从上面的代码我们会发现,返回了很多可以供我们操作的变量。

我们来看看,返回的URL值是什么:

In [1]: response.url
Out[1]: 'https://www.baidu.com'

取出百度标题的文本信息:

In [2]: response.xpath('/html/head/title/text()').get()
Out[2]: '百度一下,你就知道'

取出当前页面所有的链接文本:

In [3]: response.xpath('//a/text()').getall()
Out[3]:
['新闻','hao123','地图','视频','贴吧','登录','更多产品','关于百度','About Baidu','使用百度前必读','意见反馈']

取出当前页面所有的超链接:

In [4]: response.xpath('//a/@href').getall()
Out[4]:
['http://news.baidu.com','https://www.hao123.com','http://map.baidu.com','http://v.baidu.com','http://tieba.baidu.com','http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1','//www.baidu.com/more/','http://home.baidu.com','http://ir.baidu.com','http://www.baidu.com/duty/','http://jianyi.baidu.com/']

get()函数是返回所有结果的第一个结果;而getall()函数是返回全部结果。

当然,我们也可以使用extract_first()返回所有结果的第一个结果;而使用extract()方法则返回全部结果。

使用Xpath选择器

response.selector属性返回的内容相当于response的body构造了一个Selector对象。

Selector对象可以调用Xpath()实现信息的解析与提取。

现在我们来获取淘宝网–>商品分类–>特色市场的信息:

PS C:\Users\admin\Desktop> scrapy shell https://huodong.taobao.com/wow/tbhome/act/special-markets --nolog
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x00000186B0D061F0>
[s]   item       {}
[s]   request    <GET https://huodong.taobao.com/wow/tbhome/act/special-markets>
[s]   response   <200 https://huodong.taobao.com/wow/tbhome/act/special-markets>
[s]   settings   <scrapy.settings.Settings object at 0x00000186B0D06280>
[s]   spider     <DefaultSpider 'default' at 0x186b11b4670>
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser

打开页面之后,如下图所示:

现在我想要获取到每一个板块的标题信息。

在上图,你会发现这些信息存在于dt这个标签内。具体代码如下所示:

In [1]: response.selector.xpath('//dt/text()')
Out[1]:
[<Selector xpath='//dt/text()' data='时尚爆料王'>,<Selector xpath='//dt/text()' data='品质生活家'>,<Selector xpath='//dt/text()' data='特色玩味控'>,<Selector xpath='//dt/text()' data='实惠专业户'>]In [2]: response.selector.xpath('//dt/text()').extract()
Out[2]: ['时尚爆料王', '品质生活家', '特色玩味控', '实惠专业户']

如果我们除了将每个板块的标题与板块内的标题提取出来,那这段代码应该怎么样写呢?

从上图中可以看到,每一个大的板块都在dl标签内部。

具体代码如下所示:

In [7]: for dl in dllist:...:     print(dl.xpath('./dt/text()').extract_first())...:     print("="*50)...:     alist = dl.xpath('.//a')...:     for a in alist:...:         print(a.xpath('./@href').extract_first(),':', end='')...:         print(a.xpath('.//span[@class="market-list-title"]/text()').extract_first())...:
时尚爆料王
==================================================
https://if.taobao.com/ :潮流从这里开始
https://guang.taobao.com/ :外貌协会の逛街指南
https://mei.taobao.com/ :妆 出你的腔调
https://g.taobao.com/ :探索全球美好生活
//star.taobao.com/ :全球明星在这里
https://mm.taobao.com/ :美女红人集中地
https://www.taobao.com/markets/designer/stylish :全球创意设计师平台
品质生活家
==================================================
https://chi.taobao.com/chi/ :食尚全球 地道中国
//q.taobao.com :懂得好生活
https://www.jiyoujia.com/ :过我想要的生活
https://www.taobao.com/markets/sph/sph/sy :尖货奢品品味选择
https://www.taobao.com/markets/qbb/index :享受育儿生活新方式
//car.taobao.com/ :买车省钱,用车省心
//sport.taobao.com/ :爱上运动每一天
//zj.taobao.com :匠心所在 物有所值
//wt.taobao.com/ :畅享优质通信生活
https://www.alitrip.com/ :比梦想走更远
特色玩味控
==================================================
https://china.taobao.com :地道才够味!
https://www.taobao.com/markets/3c/tbdc :为你开启潮流新生活
https://acg.taobao.com/ :ACGN 好玩好看
https://izhongchou.taobao.com/index.htm :认真对待每一个梦想。
//enjoy.taobao.com/ :园艺宠物爱好者集中营
https://sf.taobao.com/ :法院处置资产,0佣金捡漏
https://zc-paimai.taobao.com/ :超值资产,投资首选
https://paimai.taobao.com/ :想淘宝上拍卖
//xue.taobao.com/ :给你未来的学习体验
//2.taobao.com :让你的闲置游起来
https://ny.taobao.com/ :价格实惠品类齐全
实惠专业户
==================================================
//tejia.taobao.com/ :优质好货 特价专区
https://qing.taobao.com/ :品牌尾货365天最低价
https://ju.taobao.com/jusp/other/mingpin/tp.htm :奢侈品团购第一站
https://ju.taobao.com/jusp/other/juliangfan/tp.htm?spm=608.5847457.102202.5.jO4uZI :重新定义家庭生活方式
https://qiang.taobao.com/ :抢到就是赚到!
https://ju.taobao.com/jusp/nv/fcdppc/tp.htm :大牌正品 底价特惠
https://ju.taobao.com/jusp/shh/life/tp.htm? :惠聚身边精选好货
https://ju.taobao.com/jusp/sp/global/tp.htm?spm=0.0.0.0.biIDGB :10点上新 全球底价
https://try.taobao.com/index.htm :总有新奇等你发现

使用CSS选择器

接下来,我们使用scrapy shell爬取淘宝网–>商品分类–>主题市场的信息

同样的,我们需要拿到每个板块的标题信息,具体代码如下所示:

for dd in dlist:...:     print(dd.css('a.category-name-level1::text').get())...:
女装男装
鞋类箱包
母婴用品
护肤彩妆
汇吃美食
珠宝配饰
家装建材
家居家纺
百货市场
汽车·用品
手机数码
家电办公
更多服务
生活服务
运动户外
花鸟文娱
农资采购

和上面的代码相同的,相信聪明的你也可以把每个板块下的标题文本也抓取下来的对吧。

相信这个的文章,你有更加的了解到scrapy提取数据的方式了吧!!

最后

没有什么事情是可以一蹴而就的,生活如此,学习亦是如此!

因此,哪里会有什么三天速成,七天速成的说法呢?

唯有坚持,方能成功!

啃书君说

文章的每一个字都是我用心敲出来的,只希望对得起每一位关注我的人。在文章末尾点【】,让我知道,你们也在为自己的学习拼搏和努力。

路漫漫其修远兮,吾将上下而求索

我是啃书君,一个专注于学习的人,你懂的越多,你不懂的越多。更多精彩内容,我们下期再见!

Python爬虫:和我一起学习scrapy(三)相关推荐

  1. python爬虫群_(招募截止)『Python爬虫小分队』学习群第三期招募

    一个月多月没有更新文章了,这次一上来就是广告,还是硬广 .感谢大家记得,还有不少同学在问第三期什么时候开,这就来了- 一.不是程序员而会编程为你的工作带来了哪些优势? 这是知乎上的一个问题.总结一下知 ...

  2. Python爬虫入门——3.7 Scrapy爬虫框架安装

    声明:参考资料<从零开始学Python网络爬虫 >作者:罗攀,蒋仟    机械工业出版社    ISBN: 9787111579991 参考资料<精通Python网络爬虫:核心技术. ...

  3. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  4. python爬虫框架学习_学习Python爬虫必备框架:Scrapy

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据. 但目前Scrapy的用途十分广泛, ...

  5. 如何自学python爬虫-怎样入门学习Python爬虫?

    怎样入门学习Python爬虫? 1.掌握Python编程能基础 想要学习爬虫,首先要充分掌握Python编程技术相关的基础知识.爬虫其实就是遵循一定的规则获取数据的过程,所以在学习Python知识的过 ...

  6. python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  7. [python爬虫之路day19:] scrapy框架初入门day1——爬取百思不得姐段子

    好久没学习爬虫了,今天再来记录一篇我的初入门scrapy. 首先scrapy是针对大型数据的爬取,简单便捷,但是需要操作多个文件以下介绍: 写一个爬虫,需要做很多的事情.比如: 发送网络请求, 数据解 ...

  8. Python爬虫初步个人学习及心得

    自从毕设开始搞了Python之后就觉得这个东西值得研究. 但是毕设的东西非常的浅显,个人觉得最值得训练的还是Python的爬虫,谨以此开篇,作为学习和练习Python的起步. ----------学习 ...

  9. python爬虫的基本原理以及scrapy框架的使用

    正则表达式基础 正则表达式用于处理字符串,拥有自己独立的语法以及一个独立的处理引擎. 不同提供正则表达式的语言里正则表达式的语法都式一样. . 和 * + . 匹配任意一个字符 *匹配0或多次前面出现 ...

  10. 【Python之pymysql库学习】三.sql语句的相关知识(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python之pymysql库学习』 系列,持续更新中 欢迎关注 『Python之pymysql库学习』 系列,持续更新中 实现效果 把给读取数据 ...

最新文章

  1. 红帽虚拟化RHEV-架构简介
  2. 武汉大学计算机学院毕业合影,武大校长对毕业合影有求必应
  3. freeCodeCamp纳什维尔十月聚会回顾
  4. 前端学习(1875)vue之电商管理系统电商系统之vue代码提交到码云
  5. Go 面试专题 | slice 扩容后的内存容量如何计算?
  6. escape encodeURI 和encodeURIComponent JS编码
  7. oracle mysql odbc驱动程序_用于 Oracle 的 ODBC 驱动程序
  8. Windows Server AppFabric 简介
  9. 【强化学习】⚠️手把手带你走进强化学习 3⚠️ OPP 算法实现月球登陆器 (Tensorflow2 版)
  10. (附源码)spring boot小型仪器公司生产管理系统 毕业设计 031853
  11. 如何解决 zsh: event not found: e]st1问题
  12. 搜索引擎网站登录入口|免费登录|百度登录|谷歌登录|网站收录入口
  13. 程序员工作中的一些建议
  14. 明通智能:EA交易外汇ea能稳定盈利吗?
  15. 中通快递信息怎么批量导出到表格呢?
  16. c语言中dot作用,Unix中的dot命令详解
  17. 如何导出一篇英文文献的全部参考文献
  18. 非精确线搜索 matlab,使用非精确线搜索Armijo算法确定步长的最速下降法(MATLAB)...
  19. 信息学奥赛一本通:1194:移动路线
  20. Android从零开始搭建MVVM架构(4,android面试基础题记不住

热门文章

  1. 一文精通S4 HANA中的Business Partner
  2. 高斯-约当(Gauss-Jordan)消元法
  3. 高性能服务器dyna软件重启动,LSDYNA重启动教程 ppt课件.ppt
  4. 第四课 k8s网络基础学习-DNS和DHCP学习
  5. 【Spring】AOP实现日志记录
  6. 别人都在这个春暖花开的端午节吃粽子,而我在踏青学springboot数据持久化
  7. 触摸屏 tsc2007驱动框架
  8. 如何使用matlab
  9. uni-app+uview 购物车模块组件(笔记)
  10. Linux 命令 ps