java爬虫抓取网页数据(爬虫爬虫处理html格式返回就需要用到)
优采云 发布时间: 2022-03-18 05:09java爬虫抓取网页数据(爬虫爬虫处理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中稍微麻烦一点的爬虫,比如抓取数据到自己的数据库,对模拟网页进行一些操作等等。