网购是一个流行的平台,同时也是一个非常便捷的方式,虽然是在虚拟网络的商品,但是它们都有各自的参数链接,也是商品的另类名牌,那这个淘宝宝贝链接url分析该怎么进行呢? 一、整体思路 1、首先你需要一个IP代理池 2、使用本机IP将淘宝中基本的商品分类抓取下来 页面源链接:https://www.taobao.com/tbhome/page/market-list 从页面源链接中解析到的URL形如下:https://s.taobao.com/search?q=羽绒服&style=grid 3、将诸如此类的URLhttps://s.taobao.com/search?q=羽绒服&style=grid作为任务队列,使用多线程对其进行抓取与解析(使用代理IP),解析的内容为第4点 4、我们需要分析每一种类的商品在淘宝中大概具有多少数量,为此我解析出带有页面参数的URL,在第3点中URL的基础上:https://s.taobao.com/search?q=羽绒服&style=grid&s=44,在浏览器中打开URL可发现此页面为此种类衣服的第二页 5、我们得到了每一种商品带有页面参数的URL,意味着我们可以得到此类商品中全部或部分的商品ID,有了商品ID,我们就可以进入商品详情页抓取我们想要的数据了 6、为了实现第5点,我们先将第4点中抓取到的URL全部存储进MySQL中 7、从MySQL中将待抓取URL全部取出,存储到一个队列中,使用多线程对此共享队列进行操作,使用代理IP从待解析URL中解析出本页面中包含的商品ID,并构建商品详情页URL 8、在第7点中解析商品ID的时候,同时使用布隆过滤器,对重复ID进行过滤,并将已经抓取过的URL任务放入Redis缓存中,等达到合适的阈值时,将存储在MySQL中对应的URL行记录中的flag置为true,表示此URL已经被抓取过,等到下一次重启系统,可以不用对此URL进行抓取 二、实现细节 我们先从IP代理池说起,在这个项目中所运用到的IP代理池与我在Java网络爬虫(十一)–重构定时爬取以及IP代理池(多线程+Redis+代码优化)这一篇博客中所讲述的IP代理池的实现思想有一些细小的差别。 三、监控线程 这个线程的主要作用是将Redis数据库中缓存的,已经成功解析过的任务,将其对应MySQL中所在的行记录中的flag位设置为true。 一些卖家需要把宝贝放在淘宝站外的网站上推广,这个时候就需要卖家提取无线的链接地址,大家也可以登录淘宝,进入卖家中心点击任意宝贝提取url链接哦! |