Java -- Spring Boot -- 爬虫从入门到精通 -- 爬取某二手房全部房屋信息 -- 项目实战(爬取两万+房屋出售信息)

12 篇文章 6 订阅
10 篇文章 0 订阅

导入HttpClient需要的jar包

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.12</version>
</dependency>

导入Jsoup需要的jar包

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>

一、HttpClient 入门

常用的39个用户代理:点我查看

public void doGetTestOne() throws IOException{

        // 获得Http客户端
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        // 创建Get请求
        HttpGet httpGet = new HttpGet("http://www.grfy.net/index.htm");
        // 设置请求头:User-Agent用户代理(不设置个别网站访问不了)
        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
        // 响应模型
        CloseableHttpResponse response = null;
        try {
            // 由客户端执行(发送)Get请求
            response = httpClient.execute(httpGet);
            // 从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();
            if (responseEntity != null) {
            	//获取网页源代码
                String first_page = EntityUtils.toString(responseEntity, "utf-8");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 释放资源
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

二、正则表达式实例

//创建一个存放目的数据的集合
List<String> list = new ArrayList<String>();
//编写正则表达式
String regex = "<a href=\"(http://.*?net)\">";
//Pattern与Matcher一起合作.
//Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("网页源码");
//将Matcher对象中的数据存储到list中
while (matcher.find()) {
    list.add(matcher.group(1));
}
//遍历输出list数组
for (String str : list) {
    if (str.length() < 30) {
        System.out.println("二级网页:" + str);
    }
}

三、Jsoup:Java的HTML解析器

//将网页源代码转化为Document对象
Document doc = Jsoup.parse(mubiao_page);
//查询当前标签第一个选中的第一个文本内容
String title = doc.getElementsByTag("h1").first().text();
//查询当前选中元素上一个元素
//Elements elements = doc.getElementsByTag("dd").prevAll();
//查询当前选中元素下一个元素
Elements elements = doc.getElementsByTag("dt").nextAll();
//获取迭代器
Iterator it = elements.iterator();
int i = 1;
//创建Home对象
Home home = new Home();
home.setTitle(title);
//对获取的数据进行迭代遍历,存储到Home中
while (it.hasNext()) {
    Element element = (Element) it.next();
    String text = element.text();
    if (i == 1) {
        home.setPrice(text);
    } else if (i == 2) {
        home.setArea(text);
    } else if (i == 3) {
        home.setName(text);
    } else if (i == 4) {
        home.setAdress(text);
    } else if (i == 5) {
        home.setMsg(text);
    } else if (i == 6) {
        home.setHight(text);
    } else if (i == 7) {
        home.setPeople(text);
    } else if (i == 8) {
        home.setPhone(text);
    }
    i = i + 1;
}

Gitee源码下载

点我下载:https://gitee.com/pipizi/Pc_home/tree/master/

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值