java爬蟲入門實戰
爬蟲
百度百科:網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。
爬蟲的實質,就是獲取靜態資料,並對此進行分析從而獲取對我們有價值的資料,從中可見,最重要的就是分析資料這一部分。資料的格式有json,xml,html等等,在此我們就分析鏈家網的html資料!
網路連接獲取鏈家網二手房列表頁面的頁面資料
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]