web爬虫(也称为web蜘蛛、web机器人,在FOAF社区中间,经常被称为web跟踪者) )是根据一定规则自动抓取web信息的程序或脚本。 此外,不常用的名称包括蚂蚁、自动索引、模拟程序和蠕虫。 ——百度百科
爬行动物的基本操作其实是分析静态页面,获得有价值的信息。 当前网页一般为Html格式。 当然,http请求也返回xml、json等数据格式。 入门篇以html为例。
分析需求
我打算在链家网上获取北京某小区的房价信息,每天爬一次。 如果有房价信息更新,或者有新房,就在日志文件上打log。
步骤
获取单元格页面html-分析页面元素-获取有用信息-与现有房价信息进行匹配日志
获取网页
在本例中,您将使用java附带的http客户端发送http请求并通过字符串访问。
公共字符串http get (字符串URL ) )。
{
字符串结果=' ';
缓冲读取程序in=null;
try {
URLrealurl=newURL(URL;
system.out.println (realurl 'n ' URL;
URL connection=realurl.open connection (;
urlConnection.connect (;
in=newbufferedreader (newinputstreamreader (URL connection.get inputstream () );
系统. out.println (URL connection.get header fields () );
字符串线;
while((line=in.readline ) )!=空) {
结果=line;
}
}catch(exceptione ) {
system.out.println('get请求发送异常!' e;
e .打印堆栈跟踪(;
} finally {
try{
if (入!=空) {
in.close (;
}
}catch(exceptionE2) {
E2 .打印堆栈跟踪(;
}
}
返回结果;
}
分析网页元素
打开网页检查元素就可以了。 一般的浏览器都有匹配。 慢慢往下找,就可以找到houselist,如下图所示。 所以我需要的信息都在这里面。
链网站页面元素分析
查看每个item的信息,找出您感兴趣的几个元素,title、price等。
各家信息
获取有用的信息
然后,从http请求返回的字符串中找到合适的信息。 用正则表达式匹配是个不错的选择。 其中的)包含的表示我们感兴趣的元素,最后的正则表达式如下。
//房地产数据正常匹配
publicstaticfinalstringhouseinfoexpression=' data-index=' () . //标签
' data-id=" (? 33.*? //数据id
'
() . () ) 0,).*? //title 'region . () . ()、)。
' meters . () . ()、)。
' price . num . () . *?' //价格
' price-pre . () . )
';//每平方米的价格