java爬取闲鱼商品信息(一) - AaronLin的博客 - CSDN博客

闲鱼真是一个很神奇的地方,= =能让我等学生狗不用花很多钱就能体验科技的乐趣,当然,前提是别翻车。

好了,这当然是题外话,这阵子总结了自己学习的一些技能,就写一个对闲鱼的数据抓取来练练手。

预计达到的目标:第一步,将闲鱼上发布的商品信息爬取到本地。

                           第二步,实现关键词价格域提醒,比如设置想要找一个5000以下的IPHONE X,可爱的爬虫在闲鱼抓信息的时候,当发现匹配的商品的时候,就会给你疯狂打call,好吧,给你发邮件之类的。

首先,我们看一下闲鱼闲置商品的网址:

https://s.2.taobao.com/list/list.htm?spm=2007.1000337.0.0.6e0f2979exfsD7&oon=10&st_trust=1&ist=1

样子呢是这样的

可以看出来女装鞋子什么的占了很大一部分,= = 看来都是女装大佬。

好了,从哪入手呢,当然是从这么多的分类入手了。我们都可以很轻松的发现,每个分类的链接相似度很高,大家可以自己看看。

分类的不同主要是取决于URL的catid参数。

很明显,URL和分类名称形成了一中key-value的对应关系,在程序执行过程中我们可以将其存储在hashmap中

由于hashmap的特性,就算抓取算法有问题导致重复也不会产生很大影响。

我们查看一下网页的源码,

很容易发现<li>标签里保存的是链接和分类名信息。

获取网页源码后,(如果不知道怎么获取的话,请看我之前写的爬微博热搜的文章)

我们可以利用正则表达式来把需要的信息提取出来。

如下

public static HashMap<String, String> get_list(String text){        HashMap<String, String> list=new HashMap<String,String>();//url,类别        String rule="<a href=\"//s.2.taobao.com/list/list.htm\\?catid=(.*?)&oon=10&st_trust=1&ist=1\" title=\"(.*?)\">(.*?)</a>";        Pattern pattern =Pattern.compile(rule);        Matcher matcher = pattern.matcher(text);            while (matcher.find()) {              list.put("https://s.2.taobao.com/list/list.htm?catid="+matcher.group(1)+"&oon=10&st_trust=1&ist=1", matcher.group(3));        }          return list;    }

这样就返回了一个hashmap,key是url,value是分类名。

这样我们需要爬取遍历的起点队列就很明确了,很大的简化了程序。

接下篇。


Original url: Access
Created at: 2019-06-24 16:23:56
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论