模拟浏览器爬取页面源码到本地

本文介绍了一个简单的Java爬虫实现过程,包括如何使用HttpURLConnection获取网页内容,并将其保存到本地。文章详细展示了代码示例,讨论了编码问题及解决方法,强调了在爬取网页时需注意编码一致性的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Spider类

package Spider;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class Spider{
String urlPath=null;
String htmlPath=null;
String msg=null;
public void spider() throws Exception{
URL url =new URL(urlPath);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"GBK"));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlPath),"GBK"));
while (null!=(msg=br.readLine())) {
bw.write(msg);
bw.flush();
}
br.close();
bw.close();
System.out.println("下载完成");
}
}

 

Main

package Spider;

public class Main {
public static void main(String[] args) throws Exception {

String urlPath="https://www.cnblogs.com/zhangyinhua/p/8037599.html";
String htmlPath="C:\\Users\\xianyu\\Desktop\\Jsoup(一)Jsoup详解.html";

Spider spider=new Spider();
spider.urlPath=urlPath;
spider.htmlPath=htmlPath;
spider.spider();

}
}

 

主类中的urlPath是要爬取网站的url

    htmlPath是本地存储地址

 

编写过程中出现的问题:

运行结果有乱码,spider虽然能正常下载网页代码,并能在txt中准确打开,但在浏览器中显示异常

结合输出,应该显示中文的地方都是?,推测是spider类输出流问题

原因是读取的格式和网页的编码不一致

spider

BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));

 

把utf-8改成目标网站编的码方式GBK就解决了问题

在爬网页的过程中,要先去网站看一下它的编码格式,要和它相同就不会乱码

 

 

具体可以参考博文:http://www.cnblogs.com/agileblog/p/3615250.html

补充一下有帮助的博文

用BufferedWriter 将内容写入文件:https://www.cnblogs.com/sunada2005/p/4824566.html

File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别

https://blog.youkuaiyun.com/u013225534/article/details/45727863

 

 

下一步准备实现一下自动匹配网页编码的功能

2019-05-14 02:40:55

----------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/xybz/p/10855646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值