java爬虫抓取网页数据(爬虫爬虫处理html格式返回就需要用到)

优采云 发布时间: 2022-03-18 05:09

  java爬虫抓取网页数据(爬虫爬虫处理html格式返回就需要用到)

  爬虫

  爬虫可以理解为一种从第三方网站获取数据的技术。

  关于爬虫语言

  Java对网页数据的爬取必须涉及到.URL和从URL读取的数据(本文使用字符流获取url返回),需要经过转换才能被我们使用。目前大部分都是json格式。相比html格式,json格式更简单。本文介绍返回的html格式。

  汤

  需要 Jsoup 来处理 html 格式的返回。jsoup 是一个 Java html 解析器,可以直接解析一个 URL 地址和 HTML 文本内容。具体的jar包可以自己下载。

  

  我们可以通过如下方式模拟这样的请求,然后从请求的返回中解析出我们需要的数据。

  import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

/**

* Created by wingzing on 2018/8/8.

*/

public class WingZingDemo {

public static void main(String[] args) {

String httpUrl = "http://bestcbooks.com/"; //需要爬的网址

String html;

try {

StringBuffer sbf = new StringBuffer();

URL url = new URL(httpUrl);

HttpURLConnection connection = (HttpURLConnection) url

.openConnection();

connection.setRequestMethod("GET"); //设置请求方式 可设置POST 注意一定要大写

//connection.setRequestProperty("Cookie", cookie); //设置请求头参数 如Cookie、Host等等

connection.connect(); //开启连接

InputStream is = connection.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String strRead = null;

while ((strRead = reader.readLine()) != null) { //读取返回

sbf.append(strRead);

sbf.append("\r\n");

}

reader.close();//关闭缓冲字符流

html = sbf.toString();

//System.out.println(html);

Document doc = Jsoup.parse(html);//将爬来的html格式的字符串转成Document从而获取其中需要的数据

Element ul = doc.getElementById("category-list");//取得ID为category-list的元素

Elements liList = ul.getElementsByTag("li");//取得其中的li标签 为一个集合

for(Element li:liList){ //循环该li集合

System.out.println(li.getElementsByTag("a").get(0).text());//取得每个li中的a标签的值 进行输出

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

  代码中的注释写得很清楚。可以自己复制代码运行,通过debug一步步看值。

  一般来说,首先获取页面加载或执行时发送的请求,判断是否需要参数,需要哪些参数,进行模拟,然后获取请求的返回,解析请求,获取我们的数据需要。

  以上是一个用Java实现的简单爬虫,仅供没有接触过Java的朋友学习爬虫。后续我会写一些Java中稍微麻烦一点的爬虫,比如抓取数据到自己的数据库,对模拟网页进行一些操作等等。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线