第一次爬虫记录,爬取商品基础数据以及图片

本文记录了一次爬虫实践,旨在抓取商品价格、销量等基础数据及图片。遇到的主要问题包括Ajax动态加载数据、JSON解析、入库、访问速度限制等。解决方案包括使用toggle JavaScript插件、解析JSON、处理入库、随机延时等。最后讨论了单元测试和多线程批量插入的重要性。
摘要由CSDN通过智能技术生成

需求

爬取商品价格、销量、评论、收藏量、款式等基本数据以及详情图。

遇见的主要问题以及解决方式

对于一个从来没写过爬虫的人来说很多地方都是很困惑的。而且公司要求两三天就得出结果并用于生产,再加上自己轻微的代码洁癖,综合起来还是有些压力的。
所以也没时间去学习一些爬虫框架或者道友们的一些实现方案,回头来看,都是些常规操作。

写完之后,发觉这并不是一篇好文章,朋友们在这篇文章中可能获得不了太多有价值的信息
这篇文章其实不错

第一个问题

最开始抽取所有的商品URL,要爬取的网站的数据是Ajax动态加载的。所以直接代码获取链接数据,只会返回最初的静态页面。里面几乎不会有什么可用的信息。

你可以下载一个”toggle JavaScript”的插件,启动后点击该插件,可以看到哪些显式是通过JS异步加载过来的(是点击该插件,而不是仅仅启动就可以)

比如,未使用该插件时:

这里写图片描述

点击该插件过后,会发现很多数据没有加载出来,这里加载出来的都是最初的静态页面。往往都是“item.html“

这里写图片描述

要解决这个问题,主要得找到是哪个js脚本返回的数据,找到后用jousp解析html。我们需要一个个的去查看,看是哪个地方返回了我们需要的数据

这里写图片描述

数据往往都是以JSON的形式返回的,找到该入口后,接下来就是解决翻页。
我这里是直接在URL尾部添加&pageNo=,是可行的。

            Document doc = null;
            try {
                // 解决UnsupportedMimeTypeException:ignoreContentType(true)
                doc = Jsoup.connect(entry.getValue()).headers(SpiderHeader.headers).ignoreContentType(true).timeout(30000).get();
            } catch (IOException e) {
                e.printStackTrace();
            }

后来发现请求淘宝移动端API可以基本满足我的需求,故没有继续慢慢的踩Ajax异步加载的坑
API中可能会有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值