1.import java.io.*;  

java.io.*不是一个文件,而是一组类。它是在java.io包里的所有类,*是通配符,比如a*.txt代表的就是以a开头的所有txt文件,“?”是单个词的通配符,比如a?.txt代表的就是以a开头而且名字只有两个字的txt文件

import的作用是:在你写一个类的时候。里面用到了其他的类,而用到的这个类和你现在写的这个类不是同一个包里,就需要导入那个类的全名

2.类似于C语言中int main() 的作用

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

3.String

// 定义即将访问的链接
String url = "http://www.baidu.com";
// 定义一个字符串用来存储网页内容
String result = "";

详见http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html

4.Bufferedreader

// 定义一个缓冲字符输入流
BufferedReader in = null;

BufferedReader类用于缓冲读取字符,将字节流封装成BufferedReader对象,然后用readLine()逐行读入字符流,直到遇到换行符为止(相当于反复调用Reader类对象的read()方法读入多个字符)

详见http://blog.csdn.net/caixiexin/article/details/6719482

BufferedReader

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取一个文本行,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

一般用法:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
  String data = null;
  while((data = br.readLine())!=null)
  {
   System.out.println(data);
  }

5.try{}catch(Excpetion e){}finally{}

用来捕捉异常

 catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace(); // 将错误信息打印出来
}
// 使用finally来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
在java中.close  是关闭的意思。比如session.close();  意思就是关闭session  同时释放内存。
还有常用的就是和数据库的链接 connection
在使用完毕之后,也就是一个功能代码的结尾 ,同时会写connection.close();释放内存

6.new

 // 将string转成url对象
URL realUrl = new URL(url);

比如说现在有两个类,T1和T2

T1 a=new T1();

T2 b=new T1();

就是new出两个T1的实例;你可以把T1看成是一个模子,new T1();就是按照这个模子做一个东西出来,new几次就做几个,所以做出来的东西并不是一个东西,但是它们很像。
T2 b=new T1();如果T1继承自T2的话那么程序就正确,否则就是错误代码。如果正确的话,T2 b就是声明要创建的b是T2类型,而new T1();就是创建了一个T1类型赋值给b,因为T1是T2的子类所以是允许的,如果T1和T2里有同名同参同返回方法那么调用的是T1里的。
7.Connection
// 初始化一个链接到那个url的连接
URLConnection connection = realUrl.openConnection();
public URLConnection openConnection()
throws IOException
返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
每次调用此 URL 的协议处理程序的 openConnection 方法都打开一个新的连接。 如果 URL 的协议(例如,HTTP 或 JAR)存在属于以下包或其子包之一的公共、专用 URLConnection 子类:java.langjava.iojava.utiljava.net,返回的连接将为该子类的类型。例如,对于 HTTP,将返回 HttpURLConnection,对于 JAR,将返回 JarURLConnection。
返回:
到该 URL 的 URLConnection。
// 开始实际的连接
connection.connect();

8.初始化 BufferedReader

// 初始化 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader( connection.getInputStream()));

InputStreamReader 类

是字节流通向字符流的桥梁,封裝了InputStream在里头, 它以较高级的方式,一次读取一个一个字符,以文本格式输入 / 输出,可以指定编码格式;

一般用法:

InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
   while((ch = isr.read())!=-1)
   {
    System.out.print((char)ch);
   }

示例如下

public static String getHtmlSource( String  url) throws MalformedURLException, IOException {
URLConnection uc = new URL(url).openConnection();
uc.setConnectTimeout(10000);
uc.setDoOutput(true);
InputStream in = new BufferedInputStream(uc.getInputStream());
InputStreamReader rd = new InputStreamReader(in,"gb2312");
int c = 0;
StringBuffer temp = new StringBuffer();
while((c = rd.read())!= -1){
temp.append((char)c);
}
in.close();
return temp.toString();
}

9.抓取数据并存储

// 用来临时存储抓取到的每一行的数据
String line;
while ((line = in.readLine()) != null) {
//遍历抓取到的每一行并将其存储到result里面
result += line;
}

10.输出信息System.out.println

public class Test {
public static void main(String[] args) {
int x = 5;
int y = 2;
int a=5,b=4,c=3;
System.out.println(x+y+"K");
System.out.println("abc"+a+b+c+3);
} }
结果是:
7K
abc5433

首先,这个跟println输出规则没什么关系
这个是跟运算规则和“+”连接符有关
其次x,y,a,b,c都是int型,也就是可用“+”号计算的类型
最后
第一个输出x+y+"K"
从左到右先计算x+y,结果为7是int类型,这里的"+"号是计算符号,而后“+”号是当字符串连接符号处理所以最后int的7和string类型的“K”连接后生成新的string,“7K”
第二个输出“abc”+a+b+c+3
也是从左到右计算,因为“abc”是字符串,而后跟“+”号是当字符串连接符号处理,所以是“abc5433”
其后的“+”号都当成了字符串连接符号

总之,当“+”号前后有字符串出现时,就当做字符串连接符号处理了。
例如:
int a=1;
String s="a";
System.out.println(a+s);
输出"1a"
System.out.println(s+a);
输出“a1”

而且这种情况就从左到右,依次看“+”号前后有没有字符串出现就行了。

												

JAVA学习笔记(一):一个小爬虫的例子的更多相关文章

  1. c++学习笔记---03---从一个小程序说起2

    从一个小程序说起2 要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置.当用户按下键盘上的"Enter"键时,数据输入 ...

  2. c++学习笔记---02---从一个小程序说起

    从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...

  3. 6.6(java学习笔记)文件分割(IO综合例子)

    基本思路: 文件分割:将一个文件分割成若干个独立的文件.    设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中.     使用seek定位下一次读取位置. 文件 ...

  4. Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

    学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看 ...

  5. python笔记3----第一个小爬虫

    1.先看看要爬的网站有没有爬虫协议,可以看该网站有没有robots.txt,如豆瓣的: 2.requests模块:[requests是第三方,代码比python自带的urllib模块简单] 先加载re ...

  6. Java学习笔记——实现一个简易记事本Notepad的编写

    记事本功能介绍 1.   新建:记事本清空. 2.   打开:可打开笔记本上任意文本文件. 3.   保存:将文件保存至当前文件夹. 4.   另存为:将文件保存至任意位置. 5.   退出:退出时确 ...

  7. java学习笔记—实现一个类MyInputStream(28)

    1 实现一个类MyInputStream读取文件,且不能抛出异常 public class TestDemo { public static void main(String[] args) thro ...

  8. Java 学习笔记 判断一个数组是否有序

    思路 升序:每次比较数组中的两个数的时候,最大的数一定是前一个 降序: 每次比较数组中的两个数的时候,最小的数一定是前一个 Flag1和flag2都是假的时候,返回flase,否则,返回flase 代 ...

  9. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

随机推荐

  1. ES6新特性之模板字符串

    ES6新特性概览  http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串   http://www.infoq.c ...

  2. 二模12day2解题报告

    T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...

  3. Markdown写博客

    一级目录 我接下来是不是该写二级目录了 二级目录 如果我用桌面端的Markdown会不会好很多,这个我看不到效果 听说插入表格很麻烦? 列表是这样的? 我还看不出样子 *这个是什么样子啊 引用是这样用 ...

  4. VirtualBox双网卡搭建Linux虚拟实验环境

    VirtualBox中有如下几种网络连接方式: NAT(NAT到宿主机IP地址) NAT Network (NAT到宿主机所在的网段,即使用相同的网关和掩码) Bridged Adapter Inte ...

  5. 中文api接口

    http://www.bejson.com/knownjson/webInterface/

  6. iOS不用调用,running time自动执行方法

    拿友盟举例子 友盟比较好使,友盟看了他们的文档 他告诉你你要在 appdelegate didFinishLaunch方法里面写了这个东西 [UMSocialData setAppKey:@" ...

  7. 【转】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    [转自]https://my.oschina.net/itblog/blog/547250 摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticS ...

  8. 应用EF访问SQLite数据

    创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...

  9. [JSP]获取时间

    <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.uti ...

  10. 【原】jQuery与CSS自动生成验证码

    模板: <button class="r receive_code">获取验证码</button> <span class="r code& ...