java爬虫爬取主流房屋网站

最近博主要做一些分析课题,所以使用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("文档格式后缀不正确!!!");
        }
        // 创建表sheet
        sheet1 = workbook.createSheet("sheet1");
    }
}
源码下载:
http://download.csdn.net/download/weixin_35757704/10157312
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值