Java中置顶怎么写,[置顶] 自己写的用java实现的小爬虫

今天写了个简单的小爬虫,可以获取大部分网站的网站源代码,扒取网站上图片并下载到本地指定目录下,可以作为爬虫学习的入门的例子:

37f6efdfb675d1c8d752b3cba5e228e5.png

37f6efdfb675d1c8d752b3cba5e228e5.png

37f6efdfb675d1c8d752b3cba5e228e5.png

1.获取网页源代码:

public static String getHtmlResourceByURL(String url,String encoding)

{

//声明一个存储网页源代码的容器——字符缓冲区

StringBuffer buffer=new StringBuffer();

//注意涉及流的地方要给其一个初始值

URL urlObj=null;

URLConnection uc=null;

InputStreamReader in=null;

BufferedReader reader=null;

//因为存在网络等原因的连接失败,所以要try,catch抛出异常

try {

//建立网络连接

urlObj=new URL(url);

//打开网络连接

uc=urlObj.openConnection();

//建立网络的输入流

in=new InputStreamReader(uc.getInputStream(),encoding);

//缓冲写入文件流

reader=new BufferedReader(in);

//临时变量

String tempLine=null;

//一行一行的读取文件流

while((tempLine=reader.readLine())!=null)

{

//将数据放入缓冲区

buffer.append(tempLine+"\n");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("连接超时!");

}

//随手关闭流

finally{

if(in !=null)

{

try

{

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.print("关闭出错");

}

}

}

//将buffer(Stringbuffer类型转化为String类型)

return buffer.toString();

}

2.  指定编码,将图片下载到本地·指定文件夹:

/*

* 根据一个图片URL地址,批量下载图片到服务器磁盘filePath

* @param imgURL 要下载的图片服务器地址

* @param filePath 下载保存图片地址

*/

public static void downImages(String imgURL,String filePath)

{

//根据指定路径创建目录

File parent = new File(filePath);

//判断文件夹是否存在

if(!parent.exists()){

parent.mkdirs();

}

//获取图片名字,即截取图片路径最后一个/后面的内容

String fileName=imgURL.substring(imgURL.lastIndexOf("/"));

//获取文件的后缀名

String imgType = imgURL.substring(imgURL.lastIndexOf(".")+1);

try {

//使用java的ImageIO读取指定URL下的图片

BufferedImage image = ImageIO.read(new URL(imgURL));

System.out.println(fileName+","+imgType+","+image);

//在parent目录下创建指定文件名称文件file

File file = new File(parent,fileName);

System.out.println(file.getAbsolutePath());

ImageIO.write(image, imgType, file);

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

3.测试代码:

public static void main (String args[])

{

String imgSrc=null;

//获取源代码

String htmlResource=

getHtmlResourceByURL("http://www.mooncollege.cn/","utf-8");

System.out.println("源代码为:"+htmlResource);

//解析源代码

Document document=Jsoup.parse(htmlResource);

//获取网页图片

Elements elements=document.getElementsByTag("img");

for(Element element:elements)

{

//jsoup的element的attr(XX)的作用,根据属性取数据

//获取图片相对地址

imgSrc=element.attr("src");

if(imgSrc!="")

{

/*System.out.println("下载图片地址:"+"http://www.163.com/"+imgSrc);*/

System.out.println("下载图片地址:"+imgSrc);

downImages(imgSrc,"./img");

System.out.println("图片下载成功");

}

}

//解析我们需要下载的内容部分

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值