系列教程:
手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
老规矩,爬之前首先感谢淘宝公布出这么多有价值的数据,才让我们这些爬虫们有东西可以搜集啊,不过淘宝就不用我来安利了
广大剁手党相信睡觉的时候都能把网址打出来吧。
工欲善其事,必先利其器,先上工具:
1、神箭手云爬虫,2、Chrome浏览器 3、Chrome的插件XpathHelper 不知道是干嘛的同学请移步第一课
好了,咱们还是先打开淘宝网:
清新的画面,琳琅满目的商品,隐约感到的是前方是一场恶战:
淘宝这么多的商品,这么多的主题,到底从哪里开始呢?要不就女装了,别问我为什么,咱们先打开一个女装的列表页面:
https://s.taobao.com/list?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F
我们点击一下下一页看看连接:
https://s.taobao.com/list?q=%E5%A5%97%E8%A3%85%E5%A5%B3%E5%A4%8F&bcoffset=-4&s=60
看着好像不难,很简单,不过值得注意的是,我们把鼠标移到下一页可以看到连接本身并不是这个,这个是js处理的,这种情况类似前面我们遇到的尚妆网下一页,我们一会再说。
我们再看下详情页
https://item.taobao.com/item.htm?spm=a217f.7283053.1997524073.204.hEmtfc&id=527101625954&scm=1029.minilist-17.1.16&ppath=&sku=&ug=#detail
https://item.taobao.com/item.htm?spm=a217f.7283053.1997524073.209.hEmtfc&id=528697742170&scm=1029.minilist-17.1.16&ppath=&sku=&ug=#detail
看着比较简单,就直接提取成:
https://item\\.taobao\\.com/item\\.htm\\?.*
我比较懒,这个就先这样吧,然后我们来看看详情页我们需要抽取哪些信息,商品名称,价格自然不能少,这次再来一个新鲜的,就是缩略图列表,因为淘宝的商品不只有一个缩略图,因此需要爬取一个缩略图数组。
同样,用chrome开发者工具和xpathhelper对抽取项进行分析,看了一下结果,尝试过滤xhr,结果:
高手就是高手,在大量的请求中,找到响应的请求,相当的困难。不要紧,还记得我们上节课提到的吗-JS渲染引擎,只要我们把JS渲染引擎打开,那么我们完全不用操心大量ajax请求的判断,当然他的问题是效率低一些,不过没关系,反正在云上跑嘛,睡一觉就好了。
在神箭手里调用JS渲染引擎的方式很简单,只需要一行代码设置既可:
configs.enableJS=true
好了,那我们现在可以无视ajax请求了,直接用chrome工具打开,直接提取:
//em[@id="J_PromoPriceNum"]
简单暴啦,然后高兴没有1秒钟,瞬间蒙逼,淘宝上的价格不仅有这种促销价格,还有价格区间,还有的是普通的价格,我的天的,这不是要人命吗~
没办法,再难也要硬着头皮上,目前来看,一共有两种价格的抽取方式,当然不排除有其他多种的情况,我们先对这两种分别写一下抽取规则:
//em[@id="J_PromoPriceNum"]
//em[contains(@class,"tb-rmb-num")]
我们可以通过 | 这个来连接,表达不同页面的选取可以共存
//em[@id="J_PromoPriceNum"] | //em[contains(@class,"tb-rmb-num")]
不容易。我们再看看商品名称,这个相对简单:
//h3[contains(@class,'tb-main-title')]/@data-title
最后,我们需要抽取图片的地址:
//ul[@id="J_UlThumb"]/li//img/@src
由于这一项存在多项,因此需要将该抽取规则的repeated字段设置成true
var configs = { domains: ["www.taobao.com","item.taobao.com"], scanUrls: ["https://www.taobao.com/go/market/nvzhuang/citiao/taozhuangqun.php"], contentUrlRegexes: ["https://item\\.taobao\\.com/item\\.htm\\?.*"], helperUrlRegexes: ["https://www\\.taobao\\.com/go/market/nvzhuang/citiao/taozhuangqun.php"],//可留空 enableJS:true, fields: [ { // 第一个抽取项 name: "title", selector: "//h3[contains(@class,'tb-main-title')]/@data-title",//默认使用XPath required: true //是否不能为空 }, { // 第二个抽取项 name: "price", selector: "//em[@id='J_PromoPriceNum'] | //em[contains(@class,'tb-rmb-num')]",//默认使用XPath }, { // 第三个抽取项 name: "thumbs", selector: "//ul[@id='J_UlThumb']/li//img/@src",//默认使用XPath }, ] }; var crawler = new Crawler(configs); crawler.start();
好了,虽然淘宝比尚妆网难的多,但是可以一切迎刃而解,回头我们在来处理下一页的问题,这里虽然和尚妆网不一样,但是整体的原理大同小异,就不一一解释,我们直接上代码:
相关推荐
在本节课中,我们会学习如何处理电商网站尚妆网的AJAX请求,以及如何提取动态加载的内容。这是一个非常实用的教程,因为AJAX技术广泛应用于现代网页中,而动态内容加载也是电商网站常见的技术之一。 首先,我们需要...
本教程“手把手教你写Python爬虫”将引导你逐步掌握这一技能。Python因其语法简洁、库资源丰富,成为爬虫开发的首选语言。下面,我们将深入探讨Python爬虫的核心概念、常用库以及实践技巧。 首先,你需要了解网络...
本教程将深入浅出地教你如何使用Python编写爬虫,让你从零基础快速入门。 首先,我们需要了解Python爬虫的基础知识。爬虫主要分为三个步骤:请求网页、解析网页和存储数据。Python中的`requests`库可以用来发送HTTP...
作为初学者的全面指南,这套教程旨在帮助你从零开始掌握Python3爬虫技术,无论你是否具备编程背景,都能通过手把手的教学逐步熟悉这个领域。 首先,我们从Python3的基础知识开始,包括变量、数据类型(如整型、浮点...
更好的SEO,搜索引擎爬虫爬取工具可以直接查看完全渲染的页面 更宽的内容达到时间(time-to-content),当权请求页面的时候,服务端渲染完数据之后,把渲染好的页面直接发送给浏览器,并进行渲染。浏览器只
Vue3 和 Nuxt3 是当前前端开发领域中的热门框架,尤其在构建高性能的单页应用(SPA)和服务器端渲染(SSR)项目时。Vue3 提供了更高效、可扩展和模块化的架构,而 Nuxt3 则是基于 Vue3 的一个高级框架,专门用于简化...
总的来说,设计并实现这个云招聘系统,需要开发者具备扎实的Python基础,对Django框架有深入理解,熟悉Web爬虫技术,掌握数据库操作,以及一定的前端开发技能,特别是JavaScript和数据可视化库的使用。通过这样的...