当前位置: 首页 > news >正文

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。

引入

我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。

没错,html文件就是由一堆代码组成的,然后由浏览器进行渲染展示,那我们直接在浏览器中打开html文件是不是就可以了呢,来看看浏览器打开什么样。

感觉比纯代码好多了,但是我们再看看实际的网站页面什么样呢?

发现正式的网站漂亮很多,布局也很好,那这种效果怎么来的呢?学过web开发的朋友肯定知道,浏览器渲染网页时,不仅有html文件,还有CSS和JavaScript文件,来共同渲染出页面。CSS用来设定网页显示的效果,包括布局、样式、颜色等等,JavaScript用来实现网页的动画或特效,做爬虫我们要知道,我们默认爬取下来的只有html文件,不包括CSS和JS文件,但需要知道有这两个文件,因为有些网站不是静态的,数据是实时从数据库中拿的,而这些数据是通过JS来获取的,爬虫学深了后,就会知道如何从JS中拿数据了,后面有机会单独讲解这一块。
网站开发不在本教程的范围内,因此这里只提及,不会深度讲究,有需要系统学习的,可自己寻找相关文章或课程了解。

在哪提取数据

接着看如何提取数据,访问网站,我们能看到有几篇文章,我想找到这些文章的标题和链接,怎么找到它们呢?我们需要解析爬取到的页面,提取其中的想要的数据,说到这,就牵扯到Scrapy中一个重要的类——Spider类。

Spider类

Spider类是用来定义怎样抓取网站或一组站点的,包括如何爬取、如何提取结构化数据等。也就是说我们爬取什么网站,怎么爬取,如何解析这个网站都在Spider中定义。
这里说下Spider的抓取周期,有助于我们的理解:

  1. 生成初始的Requests爬取第一个URLs,并标识回调函数用于接收从requests中下载到的response。
    • 通过start_requests()方法获得要执行的第一个请求,该方法默认从start_urls列表中获得 URL来生成请求,并将parse方法作为请求的默认回调函数。
  2. 在回调函数中,解析response,并返回Item对象、Request对象或一个可迭代的对象。
    • 返回的Request对象也包含一个回调函数,稍后会被Scrapy下载,并用指定的回调函数对其处理
  3. 在回调函数中解析并生成items时,你可以使用Scrapy自带的Selectors,也可以用BeautifulSoup、lxml或其他你熟悉的工具
  4. 最后返回的items,一般会被持久化地保持到数据库,或用Feed exports导出到不同的文件。(Feed exports的相关介绍可参见Feed exports — Scrapy 2.12.0 documentation)

选择器Selectors

上面了解了Spider类的作用,从而也知道了,我们要想解析出文章的标题和链接,需要在爬虫程序下的回调函数中解析,也提到了,我们解析数据可以使用Scrapy自带的Selectors,也可以用BeautifulSoup、lxml或其他工具,本教程主要讲解的是Scrapy,因此BeautifulSoup、lxml工具不在此介绍,后面我会出单独的文章,感兴趣的朋友可以关注一下,这里我们主要说下Scrapy自带的Selectors。
Scrapy的Selectors是对parsel库的简单封装,为了方便对response对象做处理,关于parsel库可参考Parsel — Parsel 1.9.1 documentation。
Scrapy的Selectors包含两种选择器——CSS Selector和XPath Selector,下面分别介绍下。

CSS Selector

严格意义上来说,CSS不是一个选择器,CSS是一套用来控制HTML文件样式的语言,在Scrapy中可用其来定位内容,所以在Scrapy中我们管他叫CSS选择器。
下面是css的查找示例。

>>>response.css("title::text").get()

XPath Selector

XPath和CSS一样,XPath是一套在XML中查找元素的语言,可在xml文档中对元素和属性进行遍历,除了XML也可用于在HTML文件中快速查找定位,在Scrapy中可用其来定位内容,所以在Scrapy中我们管他叫XPath选择器。
下面是XPath的查找示例。

>>>response.xpath("//title/text()").get()

通过上面两个例子可以看出,两者都是查找标题的,但是使用了两种不同的选择器语法,CSS是通过样式来查找,XPath是通过节点来查找,两者的语法有所区别。后面会有专门的章节讲解选择器如何使用,这里不做过都介绍了,需要深入研究的可以看后面的选择器章节,下面我们直接进入实战。

验证选择器

知道了如何写选择器,那我们怎么验证我们的选择器写的对不对呢?
之前在命令行一章提到过,使用shell命令可以验证我们写的选择器对不对,下面我们来演示下。
首先访问我们的网站查看下网站标题为——古月半部落格。

然后我们打开装有Scrapy环境的终端,输入下面的命令。

>>>scrapy shell https://www.wangzhan.cn2024-11-2514:40:55[scrapy.utils.log]INFO:Scrapy2.11.2started(bot:scrapybot)(此处省略部分日志记录)2024-11-2514:40:56[scrapy.core.engine]INFO:Spider opened2024-11-2514:40:56[scrapy.core.engine]DEBUG:Crawled(200)<GET https://www.wangzhan.cn>(referer:None)[s]Available Scrapy objects:[s]scrapy scrapy module(contains scrapy.Request,scrapy.Selector,etc)[s]crawler<scrapy.crawler.Crawlerobjectat0x0000016732AB41A0>[s]item{}[s]request<GET https://www.wangzhan.cn>[s]response<200https://www.wangzhan
http://www.jsqmd.com/news/1405240/

相关文章:

  • 义乌发欧洲找货运代理,小商品卖家避坑指南
  • 宝塔 Nginx 构建 Service Worker
  • 2026年新消息:保定厂区管道疏通机定做厨房油污堵得严,疏通清洗还原本真通畅-浩长机械设备 - 行业甄选汇
  • 微信聊天记录完整导出与永久保存指南:WeChatMsg免费上手,3步备份你的全部对话
  • 一文讲清楚 Epoch、Batch 和 Iteration 的区别
  • 洛阳填充轻质碳酸钙/塑料重质碳酸钙价格矿石原料底子过硬,粉体纯度表现很靠谱-泓曜铖新材料 - 行业甄选汇
  • 西安未央宅仕达漏水检测维修全城上门 2026 全网口碑优选:防水补漏公司 #西安 - 超人防水
  • mysql 练习
  • 免安装做完一整套商务PPT:我用PPTist熬过的那次凌晨汇报
  • 南通通州宅仕达漏水检测维修全城上门 2026 全网口碑优选:防水补漏公司 #南通 - 超人防水
  • 2026全国连锁二奢店,保定望都县素军奢品汇名包回收 - 素军奢品汇
  • QA处理训练数据常见的4种方法
  • SMUDebugTool完全指南:解决AMD Ryzen系统调试与性能优化的6个实战技巧
  • OpenKore 安全挂机避坑指南:破除 5 个封号误区,让账号活得久一点
  • 新疆驼绒制品优质品牌** 覆盖多采购场景 - 互联网科技品牌测评
  • 2026全国连锁二奢店,保定定兴县素军奢品汇名包回收 - 素军奢品汇
  • 图片搜索图
  • Obsidian Day Planner 2025终极指南:把日程写进笔记,时间管理从此不再分裂
  • 2026临武黄金奢侈品回收实测:核心推荐与安全变现指南 - 小小酥肉
  • Sunshine 游戏串流实战上手:把书房里的 PC 游戏搬到任何屏幕(含避坑记录)
  • 开封宋城文武学校招生电话多少?2026 招生简章、报名相关信息分享 - Luckyone王
  • WarcraftHelper魔兽争霸3兼容性修复工具:让老游戏在现代电脑上满血复活
  • 别只盯着网页版!biliuwp第三方哔哩哔哩UWP客户端开源上手指南
  • 常州新北宅仕达漏水检测维修全城上门 2026 全网口碑优选:防水补漏公司 #常州 - 超人防水
  • 天津滨海新区漏水检测维修全城上门 2026 全网口碑优选:防水补漏公司 #天津 - 超人防水
  • Nacos 与 ZooKeeper 注册中心实现对比
  • 零担专线物流怎么选?有实力的平台可关注这几家
  • 2026 年当下,黄山正规的怎么做AI搜索引流平台哪家**,别再瞎做流量了!这个能精准获客的新玩法,普通人也能快速上手-抖策盈Ai豆包短视频推广 - 行业推荐官【认证】
  • Sunshine 免费游戏串流指南:30 分钟让 PC 游戏出现在每一块屏幕上
  • 宅仕达漏水检测维修全城上门 2026 全网口碑优选:防水补漏公司 #长沙岳麓区 - 超人防水