时间过来的真快,不知不觉已经来到了2024年4月份了,很长时间没有更新博客信息。四月也是一个适合回忆和感慨的月份。在这个季节里,人们会回想起过去的美好时光,也会思考未来的方向和计划。这种思考让人更加珍惜现在的生活,也让人对未来充满了信心和期待。今天继续为为大家介绍Java web项目,今天要介绍的是一个Java web编写的入门级的二手房源管理系统.二手房源管理系统的主要功能包括:登陆、爬取**二手房源数据源、二手房源数据管理、地图房源可视化。其中爬取的房源数据包括:房源名称、图片名称、小区名称、房型、面积、装修情况、朝向、单价、总价,坐标。在地图房源可视化功能中,房源以红色坐标的形式,点击相应的图标可以看到房源详情,通过指定范围来查找符合条件的房源,和链**和我爱**官网的地图找房类型,具有重要使用价值。目前系统功能已经比较完善,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步。
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。本项目是基于MVC的JSP技术进行的Web应用程序开发,其中
- JSP技术为表示层,包括EL表达式、JSP动作、JSTL标准标签技术
- Servlet为控制层技术
- JavaBean为开发模型层
- 采用MVC设计模式对各个模块进行开发
- 数据库采用mysql数据库
- 采用Tomcat作为Web服务器
- 火狐浏览器,360浏览器,Chrome浏览器,IE浏览器做为本次程序的运行浏览器。
爬取数据部分
本次爬取数据采用的开源组件为:Jsoup,其他官网地址为:jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety
JSoup是一个用于处理HTML的Java库,它提供了一个非常方便类似于使用DOM,CSS和jquery的方法的API来提取和操作数据。JSoup实现WHATWG HTML5规范,并将HTML解析为与现代浏览器相同的DOM。
- 从URL,文件或字符串中提取并解析HTML。
- 查找和提取数据,使用DOM遍历或CSS选择器。
- 操纵HTML元素,属性和文本。
- 根据安全的白名单清理用户提交的内容,以防止XSS攻击。
- 输出整洁的HTML
主要功能
整个系统的主要功能如下,用模块图给出来了,如下所示:
实现效果
1 用户登录
2 系统主界面
3 房源管理
4 房源详情
5 爬取网站
6 地图可视化找房
7 地图找房数据统计
关键代码
public static String getWeizhi(String currentUrl) {
String lat = "";
String grat = "";
try {
Connection connection = Jsoup.connect(currentUrl);
connection.timeout(20000);
connection
.header("Accept",
"text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8");
connection.header("Accept-Encoding", "gzip, deflate");
connection
.header("Accept-Language",
"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
connection.header("Cache-Control", "max-age=0");
connection.header("Connection", "keep-alive");
connection
.header("Cookie",
"city=www; global_cookie=xtm33v…0=1; __utmt_t1=1; __utmt_t2=1");
connection.header("Host", "esf.fang.com");
connection.header("Upgrade-Insecure-Requests", "1");
connection
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/61.0");
org.jsoup.nodes.Document doc = null;
try {
doc = connection.get();
} catch (IOException e1) {
e1.printStackTrace();
}
Elements e = doc.getElementsByTag("script");
for (Element element : e) {
String[] content = element.html().trim().split("\n");
for (int j = 0; j < content.length; j++) {
if (content[j].indexOf("var community_x") >= 0) {
//System.out.println(content[j].trim());
lat = content[j].trim()
.replace("var community_x", "")
.replace(";", "").replace("\"", "")
.replace("=","")
.replace("//获取小区x坐标地址","").trim();
}
if (content[j].indexOf("var community_y") >= 0) {
//System.out.println(content[j].trim());
grat = content[j].trim().replace("var community_y", "")
.replace(";", "").replace("\"", "")
.replace("=","")
.replace("//获取小区Y坐标地址","").trim();
}
}
}
} catch (Exception e) {
return "";
}
return lat + "-----" + grat;
}
项目总结
(1)在写代码之前,在大脑里一定要把思路理清楚,不能模模糊糊,一定要把功能图和流程图画出来,然后根据它去实现每一个功能块,要多分析,培养一种良好的逻辑思维能力。
(2)在写代码的过程中,一定要采取就近原则,同一个功能,或者对同一个组件的设置一般要写在一块,这样写的程序比较清晰,不容易出错,也便于查找。