简单爬虫 从指定地址下载网站内容

Http01App.java 1.使用了多线程、io流,net(网络包)

package main;import java.io.*;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;/** * Created by lxj-pc on 2017/6/27. */public class Http01App {    public static void main(String[] args) {        String url = "http://tuijian.hao123.com:80/index.html";        //启动线程下载指定位置的html内容        new Thread(new DownloadHtmlTask(url)).start();        //下载指定的html内容,并存在d://html/hao123.html    }

static class DownloadHtmlTask implements Runnable {        private String url;        String fileName = "hao123.html";        String dirPath = "d:/lxj";

public DownloadHtmlTask(String url) {

this.url = url;        }

@Override        public void run() {            //下载url指定的HTMl网页内容            try {                URL htmlURL = new URL(url);                //打开网络资源连接                try {                    URLConnection urlConnection = htmlURL.openConnection();//.filed                    HttpURLConnection conn = (HttpURLConnection) urlConnection;                    //获取网络资源的读取流                    InputStream is = conn.getInputStream();                    //判断网络资源响应是否成功                    if (conn.getResponseCode() == 200) {

//内存流 ByteArrayOutputStream                        ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[20 * 1024];//每次读取最大内存大小20k,缓冲大小                        int len = -1; //每次读取的字节长度

//开始读取网路数据                        //检测文件下载的进度                        //1.获取网络资源的总长度                        int contentLength = conn.getContentLength();                        //2.声明当前已读取的资源长度,累加len                        int curLen = 0;

while ((len = is.read(buffer)) != -1) {                            //将读取的数据读取写入内存流中                            baos.write(buffer, 0, len);

//3.计算下载进度                            curLen += len;                            System.out.println(curLen + " " + contentLength);                            //4.计算下载进度                            int p = curLen  / contentLength;                            System.out.println("下载进度" + p + "%");                        }                        //下载完成,获取内存流中的数据                        byte[] bytes = baos.toByteArray();                        //将字节数组转成字符串,并打印到控制台//                        "hello".getBytes(); zifu->zijie                        String htmlContent = new String(bytes, "utf-8");                        writerFile(htmlContent, dirPath, fileName);//成员方法在下面                        System.out.println(htmlContent);                        //  System.out.println(htmlContent);                    }} catch (IOException e) {                    e.printStackTrace();                }            } catch (MalformedURLException e) {                e.printStackTrace();            }

}

//将文件存储在指定的path的文件中        private void writerFile(String htmlContent, String dirPath, String fileName) {            File dir = new File(dirPath);

FileWriter fileWriter = null;            try {                fileWriter = new FileWriter(new File(dir, fileName));            } catch (IOException e) {                e.printStackTrace();            }            try {                fileWriter.write(htmlContent);            } catch (IOException e) {                e.printStackTrace();            }            try {                fileWriter.close();            } catch (IOException e) {                e.printStackTrace();            }

}    }    public static void outputFile(String content,String dirPath,String fileName){        File dir=new File(dirPath);        try {            FileOutputStream fileOutputStream=new FileOutputStream(new File(dir,fileName));            fileOutputStream.write(content.getBytes("utf-8"));            fileOutputStream.close();        } catch (IOException e) {            e.printStackTrace();        }    }}
时间: 2024-08-10 19:50:42

简单爬虫 从指定地址下载网站内容的相关文章

apache使用.htaccess文件实现屏蔽wget下载网站内容

经发现,虽然wget遵循 robots.txt 规则,但是那个还是可以绕过去,现在56云小编把我自己使用的屏蔽方法分享给大家: 屏蔽下载任何文件 .htaccess SetEnvIfNoCase User-Agent "^wget" bad_bot <Limit GET POST> Order Allow,Deny Allow from all Deny from env=bad_bot </Limit> 屏蔽下载部分文件 .htaccess SetEnvIfN

python3爬虫(4)各种网站视频下载方法

python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够下载下来,然而实际操作的时候也是有一定难度和技术的,这篇文章主要讲述各个网站视频资源如何下载. B站视频页面链接: https://www.bilibili.com/bangumi/play/ep118490?from=search&seid=7943855106424547918 首先我们用万能下

C#获取网页的HTML码、下载网站图片、获取IP地址

1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name="url">链接地址</param> /// <param name="encoding">编码类型</param> /// <returns></returns> public static string Get

爪哇国新游记之二十八----从url指定的地址下载一个文件到本地

package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.util.zip.GZIPInputStream; /** * 从url指定的地址下载一个文件到本地 * 2014

[Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

  第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果: 从程序来讲,步骤分为三步: 1.发起一个http请求,获取返回的response内容: 2.解析内容,分离出有效图片的url: 3.根据这些图片的url,生成图片保存至本地. 开始详细说明: 准备工作:HttpClient的Jar包,访问http://hc.apache.org/   自行下

SOCKET简单爬虫实现代码和使用方法

抓取一个网页内容非常容易,常见的方式有curl.file_get_contents.socket以及文件操作函数file.fopen等. 下面使用SOCKET下的fsockopen()函数访问Web服务器最常用的80端口,通过获取80端口的数据,并进行分析,来模拟网络爬虫的工作方法. 1.实现SOCKET模拟网络爬虫主要包括以下几个部分: 使用SOCKET获取指定页的内容. 使用get_meta_tags()函数分析网页的META.TITLE等标签内容. 解析TITLE.链接或网页内容,可以使用

Python简单爬虫第六蛋!(完结撒花)

第六讲: 今天我们来实战一个项目,我本人比较喜欢看小说,有一部小时叫<圣墟>不知道大家有没有听说过,个人觉得还是不错的,现在联网的时候,都可以随时随地用手机打开浏览器搜索查看,但是有时候也会遇到没有网络的情况,这个就很扎心了,有什么办法呢?所以这个项目基于这么一个现实背景来分析实现一下,把我们前几次讲到一些技术方法都运用一遍. (有人可能会说直接下载一个txt格式的小说文本文件不就好了,虽然是挺方便的,但是懒惰是不好的习惯,而且也没有运用到所学的知识,那么我们何必要学习呢?为什么要学,看完实例

python 简单爬虫(beatifulsoup)

---恢复内容开始--- python爬虫学习从0开始 第一次学习了python语法,迫不及待的来开始python的项目.首先接触了爬虫,是一个简单爬虫.个人感觉python非常简洁,相比起java或其他面向对象的编程语言,动态语言不需要声明函数或变量类型.python有20年的发展历史,以简洁高效闻名,python最初只是一个马戏团的名字,它的哲学是'用一种方法完成一件事情'.我第一次使用python时就被它的简洁高效迷住了,相比起c++和java,他简直太棒了.而且现阶段的大数据和人工智能领

Hello Python!用python写一个抓取CSDN博客文章的简单爬虫

网络上一提到python,总会有一些不知道是黑还是粉的人大喊着:python是世界上最好的语言.最近利用业余时间体验了下python语言,并写了个爬虫爬取我csdn上关注的几个大神的博客,然后利用leancloud一站式后端云服务器存储数据,再写了一个android app展示数据,也算小试了一下这门语言,给我的感觉就是,像python这类弱类型的动态语言相比于java来说,开发者不需要分太多心去考虑编程问题,能够把精力集中于业务上,思考逻辑的实现.下面分享一下我此次写爬虫的一下小经验,抛砖引玉