点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

坚定,严谨,勤奋,开拓

前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章:

手把手教你如何新建scrapy爬虫框架的第一个项目(上)

手把手教你如何新建scrapy爬虫框架的第一个项目(下)

关于Scrapy爬虫项目运行和调试的小技巧(上篇)

关于Scrapy爬虫项目运行和调试的小技巧(下篇)

今天我们将介绍在Scrapy中如何利用Xpath选择器从HTML中提取目标信息。在Scrapy中,其提供了两种数据提取的方式,一种是Xpath选择器,一种是CSS选择器,这一讲我们先聚焦Xpath选择器,仍然是以伯乐在线网为示例网站。

1、 打开网站,然后随机选择任意一篇文章进行查看,如下图所示。

我们需要提取的信息主要有标题、日期、主题、评论数、正文等等。

2、接下来我们就可以开始写代码了,基础代码如下图所示,需要注意的是start_urls参数值改为了具体的URL,其他的代码未发生改变。

3、回到原始网页,按下键盘的快捷键F12或者在网页上点击鼠标右键,然后选择“检查(N)”弹出网页的调试界面,如下图所示。

4、点击下图中红色框框的小图标,可以实现网页数据和源码之间的交互,可以很方便的帮助我们定位标签。

5、如下图所示,当我们选择上图中的小图标之后,再选择网页上的标题,尔后网页源码会自动跳转到我们定位的部分,可以看到标题在<h1>标签下。

6、尔后我们就可以根据上图中的网页层次结构写出标题的Xpath表达式,这里先提供一种比较笨的方法,从头到尾进行罗列的写,“/html/body/div[1]/div[3]/div[1]/div[1]/h1”,有没有发现灰常的辛苦,像这种大标题信息还比较好提取一些,若是碰到犄角旮旯的信息,就比较难写表达式了,而且这种方式容易出错,效率还低。不过小伙伴们不用灰心,浏览器给我们提供了一个便捷的方式,让我们可以直接复制Xpath表达式。在标题处或者目标信息处右键,然后选择“Copy”,再选择“Copy Xpath”即可进行复制该标签的Xpath表达式,具体过程如下图所示。

可以看到复制的Xpath表达式为“//*[@id="post-113659"]/div[1]/h1”,其中id="post-113659"是属于这篇文章的一个标识,如下图所示。

通过该标识我们就可以很快的定位到标签,其与我们用笨方法手动写出来的Xpath表达式有时候并不是一致的。下面将两个Xpath表达式所匹配的内容分别进行输出。

7、将Xpath表达式写入Scrapy爬虫主体文件中,尔后Debug我们之前定义的main.py文件,将会得到下图的输出。可以看到selector1和selector2中的数据即是网页上的内容,而且内容是一致的。

之后点击停止Debug模式,便可以退出Debug模式。

8、从上图中我们可以看到选择器将标签<h1></h1>也都取出来了,而我们想要取的内容仅仅是标签内部的数据,此时只需要使用在Xpath表达式后边加入text()函数,便可以将其中的数据进行取出。

通过这篇文章,我们可以了解到尽管我们自己写出的Xpath表达式和浏览器给我们返回的Xpath表达式在写法上并不一致,但是程序运行之后,其返回的数据内容是一致的。换句话说,关于某个目标数据的Xpath表达式并不是唯一的,只要符合Xpath表达式语法,即便是写的很短,也是没问题的,你开心就好。此外在Scrapy爬虫框架中,text()函数常常与Xpath表达式运用在一块,用于提取节点中的数据内容。

------------------- End -------------------

往期精彩文章推荐:

  • 粉丝福利——2019精选学习资源分享

  • Python环境搭建—安利Python小白的Python和Pycharm安装详细教程

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

说一两个你曾经在网络爬虫过程中使用过的选择器。

在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)相关推荐

  1. 在Scrapy中如何利用Xpath选择器从网页中采集目标数据——详细教程(下篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 二十四桥明月夜, 玉人何处教吹箫. ...

  2. python如何用xpath爬取指定内容_Python利用Xpath选择器爬取京东网商品信息

    HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step ...

  3. python爬取京东商品信息代码_Python利用Xpath选择器爬取京东网商品信息

    HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step ...

  4. Linux中vim编辑文件显示行号(临时和永久两种方式)

    一.前言   在Linux中经常使用vim编辑器去修改文件,默认是不显示行号的,那如何显示呢?有临时和永久两种方式.     本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错, ...

  5. css 查看更多_在Scrapy中如何利用CSS选择器从网页中采集目标数据——详细教程(上篇)...

    /前言/ 今天小编给大家介绍Scrapy中另外一种选择器,即大家经常听说的CSS选择器. /CSS基础/ CSS选择器和Xpath选择器的功能是一致的,都是帮助我们去定位网页结构中的某一个具体的元素, ...

  6. Unity中传入任意数,转换成分,秒,并进行倒计时换算..(两种方式)

    第一种方式是利用Unity中的协程,代码如下: using System.Collections; using System.Collections.Generic; using UnityEngin ...

  7. html的后代选择器,html5怎么使用后代选择器?html选择后代的两种方式详解!

    在项目开发的过程中,同一个文档中可能会用到很多相同的标签,也有可能用到很多相同的类名,这就导致 html 在开发中选择器不好使用的问题,如果全部使用 id 选择器又不符合语义化的效果.这时候,我们就可 ...

  8. python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信

    目 录 摘要 实操 代码分析 需求来源与路径选择 参考 摘要 本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单 ...

  9. 关于利用qrcode生成二维码的两种方式的区别

    首先以下内容是查找网上资料后了解的利用qrcode.js生成二维码的额两种方式,canvas(即画布)方式和table方式(原文地址http://www.helloweba.com/view-blog ...

最新文章

  1. 关于文章 Generating Impact-Based Summaries... By Mei qiaozhu
  2. 【配置】成本组件结构定义(OKTZ)
  3. Nginx静态资源盗链的效果展示
  4. 渗透测试小马(一句话)篇
  5. 【Java学习笔记六】常用数据对象之String
  6. 对话阿里云叔同:释放云价值,让容器成为“普适”技术
  7. codeforces-1201 C Maximum Median
  8. 图论算法在机试实现中的一些技巧和陷阱
  9. 95-36-220-ChannelHandler-RejectedExecutionHandlers
  10. 竞品分析:网易云音乐和QQ音乐,音乐类app的战场
  11. 谱瑞PS8625替代方案|PS8622替代方案|高性价比EDP转LVDS转接板方案CS5211设计开发
  12. 魔百盒CM201-2-YS代工-刷机固件及教程
  13. IBM 开源图形终端Kui框架
  14. 人生的诗·335~339节
  15. ERNIE-ViLG文心跨模态AI绘画大模型——中文版stable-diffusion
  16. 如何增强云端医疗健康数据的隐私保护
  17. Aspose.Cells Excel删除行
  18. windows11编译OpenCV4.5.0 with CUDA(附注意事项)
  19. bash shell:获取当前脚本的绝对路径(pwd/readlink)
  20. jsencrypt.js加密java后端解密

热门文章

  1. Microsoft Edge视频播放绿屏解决办法
  2. C语言中使用正则表达式
  3. Ubuntu下使用IntelliJ IDEA的正确姿势
  4. 数据结构系列2——双向链表和双向循环链表
  5. 教学案例五 循环结构
  6. 分布式事务及解决方案
  7. git 主干修改合并到分支_这才是真正的 Git——分支合并
  8. Android多分辨率适配解决方案
  9. 计算机技术在塑料模具中的应用,浅谈CAD/CAE技术在塑料模具中的应用
  10. linux中date命令详解,Linux使用date命令修改日期时间详解linux操作系统 -电脑资料...