最近博主要做一些分析课题,所以使用java爬取了主流的房屋网站,搞些事情,下面是我搞事情的思路,在结尾处我会投放我的源码文件,供大家下载:

导航:

  1. 设计思路
  2. 项目的包与类详解
  3. 部分重要代码展示
  4. 源码下载

设计思路:

想要爬取房屋的网站,就要有以下几个东西:

  1. 一个爬取网页的类,方便爬取网页文件
  2. 一堆能够解析不同单位的类,得到页面后进行解析
  3. 一个能够保存解析结果到本地的类,最好是excel数据表类型
  4. 还有一套不要循环爬取,甚至爬取到与本网站无关的其他网页
  5. 还有一个能够把以上内容都串起来类

项目的包与类详解:

包packet:

  1. analyze包:分析目标网页,并提取内容的包
  2. excelUtils包:读写excel数据表的包
  3. fileUtils包:读写文件的包

重要的类:

  1. Spider类:作为爬虫的主要战场,因为搜房的网站内容大多是静态网页,因此我们完全可以通过jsoup进行网页的信息爬取
  2. GetDetails类:是一个抽象类,同时是解析不同网页的父类,这里我们通过多态的方式,在Spider中引用父类的方法,把子类对象传递进来,执行子类的方法,这样就可以在不改变源码的情况下随时增加可以解析的网页的种类
  3. 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爬虫爬取主流房屋网站相关推荐

  1. Java爬虫 爬取某招聘网站招聘信息

    Java爬虫 爬取某招聘网站招聘信息 一.系统介绍 二.功能展示 1.需求爬取的网站内容 2.实现流程 2.1数据采集 2.2页面解析 2.3数据存储 三.获取源码 一.系统介绍 系统主要功能:本项目 ...

  2. Jsoup学习 JAVA爬虫爬取美女网站 JAVA爬虫爬取美图网站 爬虫

    最近对爬虫起了兴趣,但是网上都说做爬虫最好得语言是py.但是我只会java,所以就想能不能用java实现一个爬虫,百度搜索发现,其实java也有很多优秀得开源爬虫框架,包括Gecco,webmagic ...

  3. 基于Jsoup的Java爬虫-爬取必应壁纸网站的壁纸(Java静态壁纸爬虫实例)

    准备阶段 1.必应壁纸网站:https://bing.ioliu.cn(爬取对象网站) 2.Jsoup包下载地址:https://jsoup.org/download(以下代码需要用到该包,记得导入包 ...

  4. Java爬虫-爬取四级词汇网站音频

    背景: 作为一个久不过四级的程序员有点不好意思啊,所以网购了冲刺卷认真过四级,签收后发现附送的词汇书音频网站竟然没有一键下载全部.只能自己写个伪爬虫了. 知识点: Java网络连接 字节流 文件输入输 ...

  5. java爬虫爬取互联网上的各大影视网站---360影视(附源码下载)

    关于爬虫: 万维网上有着无数的网页,包含着海量的信息,无孔不入.森罗万象.但很多时候,无论出于数据分析或产品需求,我们需要从某些网站,提取出我们感兴趣.有价值的内容,但是纵然是进化到21世纪的人类,依 ...

  6. python java 爬数据_如何用java爬虫爬取网页上的数据

    当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...

  7. Java爬虫爬取wallhaven的图片

    Java爬虫爬取wallhaven的图片 参考文章:JAVA Jsoup爬取网页图片下载到本地 需要的jar包:jsuop wallhaven网站拒绝java程序访问,所以要伪装报头. 发送请求时 C ...

  8. Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情

    Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --><d ...

  9. Java爬虫 --- 爬取王者荣耀英雄图片

    Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...

最新文章

  1. 计算机网络的运用在什么时候,离散时间排队系统及其在计算机网络中的应用
  2. Access update的时候传递参数的顺序
  3. 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
  4. CUBA平台–用于快速应用程序开发的开源Java框架
  5. Linux监控命令之 top
  6. 2017 开源软件排行_2017年面向设计师和艺术家的顶级开源解决方案
  7. HTML5(目前)无法帮你实现的五件事-多媒体
  8. 一个大神的文章如何在没有OPENCV的电脑上跑你的程序调用的opencv程序
  9. 算法时间复杂度Θ(n2)与 O(n2)
  10. C++[Error] expected primary-expression before ‘]‘ token
  11. 易班轻应用富文本介绍
  12. 利用占空比的改变调节小车速度
  13. Kafka知识体系总结【附大厂高频面试题】
  14. HDU 1878 欧拉回路(入门)
  15. 二值图像、灰度图像、彩色图像
  16. 【例10.1】从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。
  17. LVSKeepalived—集群、负载均衡、企业高可用详解
  18. vue整合视频流教程
  19. vue基于el-timeline组件实现动态表格时间线
  20. 5分钟了解微软、用友、阿里云、谷歌等本周新动态!

热门文章

  1. 判定两个点是否在一条直线的同一侧_计算几何01-判定两条线段是否相交
  2. 安卓小课堂之:读写文件(内部存储)
  3. 如何在 ES5 环境下实现一个const ?
  4. webpack 4x的安装和简单使用
  5. mysql 原理~ 乐观锁和悲观锁
  6. Enum,Int,String的互相转换 枚举转换
  7. photoshop CG6 基础知识的学习
  8. Centos YUM国内163源
  9. myeclipse查询mysql出来的汉字是乱码
  10. 【semantic】如何理解 web 语义化?