如何用java爬取网页源代码
分为3个步骤:
- 分析实现方式
- 代码展示
- 结果展示
1、分析
以b站为例 抓取b站的源代码是这样的
那么我可以用URL对象获取HttpURLConnection对象
HttpURLConnection对象:它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。
调用URL中的 openConnection()再通过强转获得连接对象HttpURLConnection
HttpURLConnection 向网页发送请求然后我们读取网页的源代码
在我们发送请求的时候可能有些网址会报一个错误:Server returned HTTP response code: 403 for URL
这个错误的意思大概就是服务器的安全设置不接受Java程序作为客户端访问
这个时候我们需要进行安全设置:
//这个方法是HttpURLConnection中的方法 参数内容具体什么意思我也不知道,反正就是设置安全性
setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
既然说到读取 那么就需要InputStream输入流 在HttpURLConnection有个 getInputStream()方法 可以获取我们的输入流对象
获取到了输入流就等于是已经拿到了源码
下面展示代码 我会把捕获到的源码写入到txt文件中
2、代码展示
main方法
public static void main(String[] args) throws Exception{
getURLData("https://www.bilibili/","utf-8");
}
getURLData是我自己定义的方法 我是在方法中实现获取源码
getURLData 方法
static void getURLData(String Url, String coding) throws Exception {
//创建URL对象 参数设置需要爬取的网址 也就是我们方法传过来的参数
URL url = new URL(Url);
//得到一个HttpURLConnection 对象
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
//防止出现Server returned HTTP response code: 403 for URL 的错误
//也就是服务器的安全设置不接受Java程序作为客户端访问 所以我们进行安全设置
huc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//通过HttpURLConnection获得输入流对象
InputStream is = huc.getInputStream();
//使用缓冲字符输入流获取源码 设置编码
BufferedReader r = new BufferedReader(new InputStreamReader(is,coding));
String line;
//写入文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1、idea项目\\算法和数据结构\\Demo\\src\\test\\_爬网址源码\\1.txt"));
//readLine()一次读一行
while ((line = r.readLine()) != null){
bw.write(line);
//读完一行就换行
bw.newLine();
//清空缓冲区
bw.flush();
}
//关闭资源
bw.close();
r.close();
is.close();
}
3、结果展示
这样我们就获得了b站的源代码,如果想要只爬取自己想要的数据
那么对数据(字符串)进行一个过滤就行了
学会了的点个赞吧~
更多推荐
如何用java获取网页源代码
发布评论