java爬虫爬取主流房屋网站
最近博主要做一些分析课题,所以使用java爬取了主流的房屋网站,搞些事情,下面是我搞事情的思路,在结尾处我会投放我的源码文件,供大家下载:
导航:
- 设计思路
- 项目的包与类详解
- 部分重要代码展示
- 源码下载
设计思路:
想要爬取房屋的网站,就要有以下几个东西:
- 一个爬取网页的类,方便爬取网页文件
- 一堆能够解析不同单位的类,得到页面后进行解析
- 一个能够保存解析结果到本地的类,最好是excel数据表类型
- 还有一套不要循环爬取,甚至爬取到与本网站无关的其他网页
- 还有一个能够把以上内容都串起来类
项目的包与类详解:
包packet:
- analyze包:分析目标网页,并提取内容的包
- excelUtils包:读写excel数据表的包
- fileUtils包:读写文件的包
重要的类:
- Spider类:作为爬虫的主要战场,因为搜房的网站内容大多是静态网页,因此我们完全可以通过jsoup进行网页的信息爬取
- GetDetails类:是一个抽象类,同时是解析不同网页的父类,这里我们通过多态的方式,在Spider中引用父类的方法,把子类对象传递进来,执行子类的方法,这样就可以在不改变源码的情况下随时增加可以解析的网页的种类
- WriteExcel类:我们使用的是maven仓库中的poi来对excel数据表(.xlsx)进行写入操作
部分重要代码展示
SpiderImpl:Spider的接口
package spider;import analyze.GetDetails;public interface SpiderImpl {/*设置顶级域名,防止在爬取过程中爬到外站链接*/void setTopUrl(String url);/*设置保存爬取成果的excel的根路径*/void setSaveRootPath(String saveRootPath);/*得到url的指定路径*/String getOnePage(String url);/*传入解析网页的子类*/void setGetDetailsClass(GetDetails getDetailsClass);/*运行爬虫*/void run();}
abstract class GetDetails:
package analyze;public abstract class GetDetails {/*判断是不是包含房屋信息的那个网页*/public abstract boolean isTarget(String url);/*解析网页*/public abstract String[] analize(String url, String html);/*在excel中加入一些用户自定义的内容*/public abstract String[] getSaveBehind();}
WriteExcel:
package excelUtils;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.OutputStream;public class WriteExcel {private String pathname;private Workbook workbook;private Sheet sheet1;public void write(String[] writeStrings, int rowNumber) throws Exception {//将内容写入指定的行号中Row row = sheet1.createRow(rowNumber);//遍历整行中的列序号for (int j = 0; j < writeStrings.length; j++) {//根据行指定列坐标j,然后在单元格中写入数据Cell cell = row.createCell(j);cell.setCellValue(writeStrings[j]);}OutputStream stream = new FileOutputStream(pathname);workbook.write(stream);stream.close();}public WriteExcel(String excelPath) throws Exception {//在excelPath中需要指定具体的文件名(需要带上.xls或.xlsx的后缀)this.pathname = excelPath;String fileType = excelPath.substring(excelPath.lastIndexOf(".") + 1, excelPath.length());//创建文档对象if (fileType.equals("xls")) {//如果是.xls,就new HSSFWorkbook()workbook = new HSSFWorkbook();} else if (fileType.equals("xlsx")) {//如果是.xlsx,就new XSSFWorkbook()workbook = new XSSFWorkbook();} else {throw new Exception("文档格式后缀不正确!!!");}// 创建表sheetsheet1 = workbook.createSheet("sheet1");}
}
源码下载:
http://download.csdn.net/download/weixin_35757704/10157312
java爬虫爬取主流房屋网站相关推荐
- Java爬虫 爬取某招聘网站招聘信息
Java爬虫 爬取某招聘网站招聘信息 一.系统介绍 二.功能展示 1.需求爬取的网站内容 2.实现流程 2.1数据采集 2.2页面解析 2.3数据存储 三.获取源码 一.系统介绍 系统主要功能:本项目 ...
- Jsoup学习 JAVA爬虫爬取美女网站 JAVA爬虫爬取美图网站 爬虫
最近对爬虫起了兴趣,但是网上都说做爬虫最好得语言是py.但是我只会java,所以就想能不能用java实现一个爬虫,百度搜索发现,其实java也有很多优秀得开源爬虫框架,包括Gecco,webmagic ...
- 基于Jsoup的Java爬虫-爬取必应壁纸网站的壁纸(Java静态壁纸爬虫实例)
准备阶段 1.必应壁纸网站:https://bing.ioliu.cn(爬取对象网站) 2.Jsoup包下载地址:https://jsoup.org/download(以下代码需要用到该包,记得导入包 ...
- Java爬虫-爬取四级词汇网站音频
背景: 作为一个久不过四级的程序员有点不好意思啊,所以网购了冲刺卷认真过四级,签收后发现附送的词汇书音频网站竟然没有一键下载全部.只能自己写个伪爬虫了. 知识点: Java网络连接 字节流 文件输入输 ...
- java爬虫爬取互联网上的各大影视网站---360影视(附源码下载)
关于爬虫: 万维网上有着无数的网页,包含着海量的信息,无孔不入.森罗万象.但很多时候,无论出于数据分析或产品需求,我们需要从某些网站,提取出我们感兴趣.有价值的内容,但是纵然是进化到21世纪的人类,依 ...
- python java 爬数据_如何用java爬虫爬取网页上的数据
当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...
- Java爬虫爬取wallhaven的图片
Java爬虫爬取wallhaven的图片 参考文章:JAVA Jsoup爬取网页图片下载到本地 需要的jar包:jsuop wallhaven网站拒绝java程序访问,所以要伪装报头. 发送请求时 C ...
- Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情
Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --><d ...
- Java爬虫 --- 爬取王者荣耀英雄图片
Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...
最新文章
- 计算机网络的运用在什么时候,离散时间排队系统及其在计算机网络中的应用
- Access update的时候传递参数的顺序
- 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
- CUBA平台–用于快速应用程序开发的开源Java框架
- Linux监控命令之 top
- 2017 开源软件排行_2017年面向设计师和艺术家的顶级开源解决方案
- HTML5(目前)无法帮你实现的五件事-多媒体
- 一个大神的文章如何在没有OPENCV的电脑上跑你的程序调用的opencv程序
- 算法时间复杂度Θ(n2)与 O(n2)
- C++[Error] expected primary-expression before ‘]‘ token
- 易班轻应用富文本介绍
- 利用占空比的改变调节小车速度
- Kafka知识体系总结【附大厂高频面试题】
- HDU 1878 欧拉回路(入门)
- 二值图像、灰度图像、彩色图像
- 【例10.1】从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。
- LVSKeepalived—集群、负载均衡、企业高可用详解
- vue整合视频流教程
- vue基于el-timeline组件实现动态表格时间线
- 5分钟了解微软、用友、阿里云、谷歌等本周新动态!