IT虾米网

java爬虫入门实战详解

admin 2018年06月09日 编程语言 418 0

爬虫

百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

爬虫的实质,就是获取静态数据,并对此进行分析从而获取对我们有价值的数据,从中可见,最重要的就是分析数据这一部分。数据的格式有json,xml,html等等,在此我们就分析链家网的html数据!

在此之前,你需要掌握正则表达式的相关知识,可以通过 String详解(三):正则表达式Pattern和Matcher详解 掌握java正则表达式的使用。

网络连接获取链家网二手房列表页面的页面数据

public class ConnectionUtil { 
 public static String Connect(String address){ 
        HttpURLConnection conn = null; 
        URL url = null; 
        InputStream in = null; 
        BufferedReader reader = null; 
        StringBuffer stringBuffer = null; try { 
            url = new URL(address); 
            conn = (HttpURLConnection) url.openConnection(); 
            conn.setConnectTimeout(5000); 
            conn.setReadTimeout(5000); 
            conn.setDoInput(true); 
            conn.connect(); in = conn.getInputStream(); 
            reader = new BufferedReader(new InputStreamReader(in)); 
            stringBuffer = new StringBuffer(); 
            String line = null; while((line = reader.readLine()) != null){ 
                stringBuffer.append(line); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally{ 
            conn.disconnect(); try { in.close(); 
                reader.close(); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 
 return stringBuffer.toString(); 
    } 
}

在这里使用了HttpURLConnection这个类进行网络连接,我在这里传入的url就是链家网二手房列表的url:http://bj.lianjia.com/ershoufang/pg1/
这里返回的结果肯定就是这个url对应的页面源代码(代码量太大,就不上该页面源代码)

这里写图片描述

我们现在要做的就是分析获取到的数据!

(重点)分析数据

我们现在需要的数据有:
1. 每套房的标题
2. 房的信息(面积,坐向等)
3. 楼层信息(建成年份等)
4. 价格
5. 详细介绍的链接

对应的页面,我们需要这些:

这里写图片描述

然后我们分析数据所在的源代码:

这里写图片描述

然后查看每一item的代码:

这里写图片描述

代码中使用正则表达式匹配解析数据:

在此只分析title的匹配,其余数据的分析思路一致,完整代码在博文末提供

private void regexTitle(List<HouseInfo> houseList, String targetStr) { 
        Pattern pattern1 = Pattern .compile("<div class=\"title\">\\s{1,}<a(.+?)</div>"); 
        Matcher matcher1 = pattern1.matcher(targetStr); 
        while (matcher1.find()) { 
            //设置title 
            Pattern pattern2 = Pattern.compile(">[\u0391-\uFFE5]+.+?</a>"); 
            Matcher matcher2 = pattern2.matcher(matcher1.group()); 
            String matcherString = ""; 
            HouseInfo info = new HouseInfo(); 
            if (matcher2.find()) { 
                matcherString = matcher2.group(); 
                info.setTitle(matcherString.substring(1, 
                        matcherString.length() - 4)); 
            } 
            //设置外连接 
            pattern2 = Pattern.compile("((http|https)://)?([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?"); 
            matcher2 = pattern2.matcher(matcher1.group()); 
            if (matcher2.find()) { 
                info.setLink(matcher2.group()); 
            } 
            houseList.add(info); 
        } 
    }

爬取的数据如下:

[销售标题 : 杨庄22号院 2室1厅 350万 总价 : 350万 单位价格 : 单价50000元/平米 房子信息 : 杨庄22号院 | 2室1厅 | 70平米 | 南 北 | 精装 | 无电梯 楼层信息 : 中楼层(共6层) 1998年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100766770.html]

[销售标题 : 六里屯东里 2室1厅 340万 总价 : 340万 单位价格 : 单价55375元/平米 房子信息 : 六里屯东里 | 2室1厅 | 61.4平米 | 南 北 | 简装 | 无电梯 楼层信息 : 高楼层(共7层) 1987年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100717445.html]

[销售标题 : 丽水嘉园 3室2厅 1000万 总价 : 1000万 单位价格 : 单价78703元/平米 房子信息 : 丽水嘉园 | 3室2厅 | 127.06平米 | 西北 | 精装 | 有电梯 楼层信息 : 低楼层(共27层) 2005年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100584510.html]

[销售标题 : 万国城MOMA 3室2厅 2250万 总价 : 2250万 单位价格 : 单价91931元/平米 房子信息 : 万国城MOMA | 3室2厅 | 244.75平米 | 东南 | 精装 | 有电梯 楼层信息 : 中楼层(共26层) 2006年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100275093.html]

[销售标题 : 翠屏北里西区 4室2厅 685万 总价 : 685万 单位价格 : 单价36777元/平米 房子信息 : 翠屏北里西区 | 4室2厅 | 186.26平米 | 南 北 | 简装 | 无电梯 楼层信息 : 高楼层(共7层) 2002年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100543850.html]

[销售标题 : 草桥欣园18号院 2室1厅 460万 总价 : 460万 单位价格 : 单价63889元/平米 房子信息 : 草桥欣园18号院 | 2室1厅 | 72平米 | 南 北 | 简装 | 无电梯 楼层信息 : 低楼层(共6层) 2000年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100804309.html]

[销售标题 : 绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 总价 : 800万 单位价格 : 单价59809元/平米 房子信息 : 绿荫芳邻 | 2室2厅 | 133.76平米 | 南 北 | 精装 | 有电梯 楼层信息 : 低楼层(共14层) 2003年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100740674.html]

[销售标题 : 绿岛家园 3室1厅 500万 总价 : 500万 单位价格 : 单价39969元/平米 房子信息 : 绿岛家园 | 3室1厅 | 125.1平米 | 南 北 | 简装 | 无电梯 楼层信息 : 低楼层(共6层) 2006年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100770868.html]

[销售标题 : 天通西苑二区 2室2厅 400万 总价 : 400万 单位价格 : 单价32266元/平米 房子信息 : 天通西苑二区 | 2室2厅 | 123.97平米 | 东 西 | 精装 | 有电梯 楼层信息 : 低楼层(共13层) 2003年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100736254.html]

[销售标题 : 天通苑北二区 3室1厅 495万 总价 : 495万 单位价格 : 单价36373元/平米 房子信息 : 天通苑北二区 | 3室1厅 | 136.09平米 | 南 北 | 精装 | 有电梯 楼层信息 : 低楼层(共18层) 2005年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100750501.html]

[销售标题 : 首城国际 2室1厅 850万 总价 : 850万 单位价格 : 单价94867元/平米 房子信息 : 首城国际 | 2室1厅 | 89.6平米 | 东南 北 | 精装 | 有电梯 楼层信息 : 低楼层(共28层) 2010年建板塔结合 详细连接 : http://bj.lianjia.com/ershoufang/101100718581.html]

[销售标题 : 探矿家属院 3室1厅 282万 总价 : 282万 单位价格 : 单价49474元/平米 房子信息 : 探矿家属院 | 3室1厅 | 57平米 | 南 北 | 简装 | 无电梯 楼层信息 : 高楼层(共6层) 1996年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100734525.html]

[销售标题 : 天畅园 2室1厅 635万 总价 : 635万 单位价格 : 单价59352元/平米 房子信息 : 天畅园 | 2室1厅 | 106.99平米 | 西北 | 精装 | 有电梯 楼层信息 : 高楼层(共32层) 2008年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100742525.html]

[销售标题 : 南湖东园二区 2室1厅 540万 总价 : 540万 单位价格 : 单价77254元/平米 房子信息 : 南湖东园二区 | 2室1厅 | 69.9平米 | 南 | 简装 | 有电梯 楼层信息 : 低楼层(共12层) 1999年建板塔结合 详细连接 : http://bj.lianjia.com/ershoufang/101100763580.html]

[销售标题 : 国美第一城3号院 2室1厅 580万 总价 : 580万 单位价格 : 单价59794元/平米 房子信息 : 国美第一城3号院 | 2室1厅 | 97平米 | 西南 | 精装 楼层信息 : 中楼层(共26层) 2007年建板塔结合 详细连接 : http://bj.lianjia.com/ershoufang/101100743081.html]

[销售标题 : 安慧里四区 3室1厅 608万 总价 : 608万 单位价格 : 单价77502元/平米 房子信息 : 安慧里四区 | 3室1厅 | 78.45平米 | 东南 | 精装 | 有电梯 楼层信息 : 低楼层(共20层) 1991年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100743598.html]

[销售标题 : 南湖东园一区 2室2厅 585万 总价 : 585万 单位价格 : 单价60805元/平米 房子信息 : 南湖东园一区 | 2室2厅 | 96.21平米 | 东南 | 精装 | 有电梯 楼层信息 : 低楼层(共18层) 1998年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100745643.html]

[销售标题 : 龙泽苑西区 2室1厅 460万 总价 : 460万 单位价格 : 单价57250元/平米 房子信息 : 龙泽苑西区 | 2室1厅 | 80.35平米 | 南 北 | 精装 | 无电梯 楼层信息 : 低楼层(共6层) 2000年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100762406.html]

[销售标题 : 百旺茉莉园 3室2厅 1130万 总价 : 1130万 单位价格 : 单价89406元/平米 房子信息 : 百旺茉莉园 | 3室2厅 | 126.39平米 | 南 北 | 简装 | 无电梯 楼层信息 : 中楼层(共5层) 2005年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100758710.html]

[销售标题 : 北京青年城 2室1厅 480万 总价 : 480万 单位价格 : 单价65307元/平米 房子信息 : 北京青年城 | 2室1厅 | 73.5平米 | 南 北 | 精装 | 无电梯 楼层信息 : 高楼层(共6层) 2003年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100716217.html]

[销售标题 : 新龙城 2室1厅 560万 总价 : 560万 单位价格 : 单价57549元/平米 房子信息 : 新龙城 | 2室1厅 | 97.31平米 | 南 北 | 精装 | 有电梯 楼层信息 : 低楼层(共9层) 2006年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100736278.html]

[销售标题 : 天秀花园澄秀园 3室1厅 880万 总价 : 880万 单位价格 : 单价59073元/平米 房子信息 : 天秀花园澄秀园 | 3室1厅 | 148.97平米 | 东 南 北 | 精装 | 无电梯 楼层信息 : 高楼层(共6层) 2007年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100562161.html]

[销售标题 : 世纪星城 3室1厅 700万 总价 : 700万 单位价格 : 单价55791元/平米 房子信息 : 世纪星城 | 3室1厅 | 125.47平米 | 南 北 | 简装 | 有电梯 楼层信息 : 高楼层(共12层) 2005年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100526434.html]

[销售标题 : 望京新城 3室2厅 850万 总价 : 850万 单位价格 : 单价59470元/平米 房子信息 : 望京新城 | 3室2厅 | 142.93平米 | 东南 | 精装 | 有电梯 楼层信息 : 高楼层(共25层) 2000年建板塔结合 详细连接 : http://bj.lianjia.com/ershoufang/101100671982.html]

[销售标题 : 新华联锦园 3室2厅 779万 总价 : 779万 单位价格 : 单价56032元/平米 房子信息 : 新华联锦园 | 3室2厅 | 139.03平米 | 南 北 | 精装 | 无电梯 楼层信息 : 低楼层(共6层) 2002年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100717698.html]

[销售标题 : 垂虹园 2室1厅 1230万 总价 : 1230万 单位价格 : 单价100953元/平米 房子信息 : 垂虹园 | 2室1厅 | 121.84平米 | 东南 | 简装 | 有电梯 楼层信息 : 低楼层(共18层) 2004年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100793010.html]

[销售标题 : 北京像素北区 2室1厅 335万 总价 : 335万 单位价格 : 单价55908元/平米 房子信息 : 北京像素北区 | 2室1厅 | 59.92平米 | 西南 | 精装 | 有电梯 楼层信息 : 低楼层(共14层) 2011年建板塔结合 详细连接 : http://bj.lianjia.com/ershoufang/101100731481.html]

[销售标题 : 六建 南北通透三居 看房方便 总价 : 595万 单位价格 : 单价80953元/平米 房子信息 : 六建 | 3室1厅 | 73.5平米 | 南 北 | 简装 | 无电梯 楼层信息 : 低楼层(共6层) 1985年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100785347.html]

[销售标题 : 胜古南里 3室1厅 575万 总价 : 575万 单位价格 : 单价77766元/平米 房子信息 : 胜古南里 | 3室1厅 | 73.94平米 | 南 北 | 毛坯 楼层信息 : 低楼层(共6层) 1981年建板楼 详细连接 : http://bj.lianjia.com/ershoufang/101100775727.html]

[销售标题 : 时代国际嘉园 2室1厅 750万 总价 : 750万 单位价格 : 单价82156元/平米 房子信息 : 时代国际嘉园 | 2室1厅 | 91.29平米 | 南 北 | 精装 | 有电梯 楼层信息 : 高楼层(共12层) 2006年建塔楼 详细连接 : http://bj.lianjia.com/ershoufang/101100773483.html]

完整代码

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

经典排序算法:快速排序(Quick Sort)详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。