爬虫
百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在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]