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

   日期:2020-11-04     浏览:98    评论:0    
核心提示:Spring Boot 爬虫从入门到精通导入HttpClient需要的jar包导入Jsoup需要的jar包一、HttpClient 入门二、正则表达式实例三、Jsoup:Java的HTML解析器Gitee源码下载导入HttpClient需要的jar包<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId&g

Spring Boot 爬虫从入门到精通

  • 导入HttpClient需要的jar包
  • 导入Jsoup需要的jar包
  • 一、HttpClient 入门
  • 二、正则表达式实例
  • 三、Jsoup:Java的HTML解析器
  • Gitee源码下载

导入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/

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服