首页 > 其他分享 >在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

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

时间:2023-04-21 10:04:22浏览次数:36  
标签:Xpath 网页 我们 Scrapy 选择器 表达式


坚定,严谨,勤奋,开拓



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

在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)_数据

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

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

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


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

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

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

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

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

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

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

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

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

在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)_数据_07

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

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

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

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

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

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

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

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

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


标签:Xpath,网页,我们,Scrapy,选择器,表达式
From: https://blog.51cto.com/u_13389043/6212022

相关文章

  • python中scrapy框架安装和创建
    第一步是先安装wheelpipinstallwheel第二步是安装lxmlpipinstalllxml第三步是安装Twisted,先在https://www.lfd.uci.edu/~gohlke/pythonlibs/中找到Twisted,然后找到与自己安装的python的版本对应的版本下载下来,然后执行安装,因为我安装的的3.10.11版本,所以我下载的是310......
  • scrapy startproject tutorial 这句话在哪输入cmd?
    大家好,我是皮皮。一、前言前几天在Python钻石交流群【未央.】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。课程截图如下:官网的截图如下:二、实现过程这里【甯同学】给了提示,不过对于新手来说,还是不太容易上手的。进入终端之后,我们再启动项目,如下:正常来说,这样就可以启动成......
  • Day 25 25.1 Scrapy框架之全站爬虫(CrawlSpider)
    Scrapy框架之全站爬虫(CrawlSpider)在之前Scrapy的基本使用当中,spider如果要重新发送请求的话,就需要自己解析页面,然后发送请求。而CrawlSpider则可以通过设置url条件自动发送请求。LinkExtractorsCrawlSpider是Spider的一个派生类。CrawlSpider与spider不同......
  • Day 25 25.2 Scrapy框架之分布式爬虫(scrapy_redis)
    分布式爬虫(scrapy_redis)分布式爬虫是指将一个大型的爬虫任务分解成多个子任务,由多个爬虫进程或者多台机器同时执行的一种爬虫方式。在分布式爬虫中,每个爬虫进程或者机器都具有独立的爬取能力,可以独立地爬取指定的网页或者网站,然后将爬取到的数据进行汇总和处理。分布式爬......
  • scrapy命令
    scrapy常用命令:1.scrapystartprojectproject_name:创建一个新的Scrapy项目。2.scrapygenspiderspider_namedomain:创建一个新的Scrapy爬虫。3.scrapycrawlspider_name:运行指定的Scrapy爬虫。4.scrapylist:列出当前Scrapy项目中所有可用的爬虫。5.scrapysh......
  • 事件 jQuery 选择器 筛选器 样式操作 CSS操作 文本操作
    事件事件可以理解为:给HTML标签添加了一些额外的功能,并且能够触发JS的代码运行1.事件就是达到某个触发条件,自动触发的动作2.常用的事件 1.onclick:当用户点击某个对象是调用的事件句柄2.onfoucus:元素获取焦点3.onblur:元素失去焦点4.onchange:域的内容被改变5.onload:......
  • Day 24 24.1 Scrapy框架之下载中间件
    Scrapy框架之下载中间件classMyDownMiddleware(object):defprocess_request(self,request,spider):"""请求需要被下载时,经过所有下载器中间件的process_request调用:paramrequest::paramspider::return:......
  • css选择器
    1、id选择器#id_name{}前缀#,后接选中html元素的id属性值选取单个2、class选择器.class_name{}前缀.,后接选中html元素的class属性值可以选择多个class_name的第一个字符不能是数字3、标签/元素选择器label_name{}直接使用标签名称,比如p,h1可以选择多个4、属性选......
  • js 选择器操作相关
    Javascript知识【jQuery选择器】 https://blog.csdn.net/m0_64550837/article/details/126231445 CSS选择器https://blog.csdn.net/weixin_44214326/article/details/128093869 ......
  • python爬虫scrapy框架的使用
    总结scrapystartprojectnamescrapygenspiderbaiduhttp://www.baidu.comscrapycrawlbaiduscrapy项目创建scrapystartprojectscrapy_baidu_091创建爬虫文件在spider中创建爬虫文件#scrapygenspider名称域名(不写http)scrapygenspiderbaiduhttp://www.b......