以前一直以为只有Python可以做爬虫,好羡慕那些会Python的同学。。。但是却忽略自己已经掌握了一名灰常厉害的江湖绝学,java大法!!! 好了废话不多说开始教程:
一、首先开始理思路
(一)、爬虫软件其实就是一个把网页下载下来的然后从里面挑选出我们想要的元素
所有技术的关键就是:
1、把网页缓存到内存
2、从里面挑出我们想要的内容
3、把挑选的内容保存到本地
二、发现难点
1、怎么缓存?
利用io流!——怎么获得io流?——利用HttpURLConnection的getInputStream(new URL(“我是网址”))方法。这样就获得了一个io流,获得io流之后就知道怎么做了吧!
2、如挑选出指定的内容?
这个时候就要问百度了,幸好百度大神多,才看了几个以后发现里面有几种方法一种是自己做一个判断挑选出想要的内容,第二种方法是利用第三方库。。。如果想锻炼基础的同学可以自己做一个第三方包,在网上搜到了有两个包可以完美解决这个问题 Jsoup包和htmlparser今天我们用第一个里面有很多方法 供我们选择(虽然是英文的但是可以谷歌翻译)
3、如何保存在本地?
同样是io流,很简单,这个不说了!
下面直接上代码:
package 爬出软件;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* @author 郭凡
* @version v1.0
* 主要是学习一下网络爬虫的写法
* 1、获取网页的数据
* 2、挑选出有用的信息
* 3、保存在本地
* */
public class main {
public static void main(String[] ags)
{
System.out.println("大家好我是爬虫!");
String url="https://movie.douban.com/subject/26662193/comments?start=20&limit=20&sort=new_score&status=P&percent_type=";
//获取网页内
String uriCentent=getUrlContent(url);
//挑选出网页的需要信息
String SelectText=SelectText(uriCentent);
System.out.println(SelectText);
//保存在本地
saveText(SelectText,"E:\\copyFile\\网络爬虫.text");
}
public static String getUrlContent(String url)
{
URL url1;
StringBuilder s=new StringBuilder();
try {
//先连接网路使用httpURlConnection
url1 = new URL(url);
HttpURLConnection connection=(HttpURLConnection) url1.openConnection();
//获取网络流
InputStream in=connection.getInputStream();
//转换成字符流
InputStreamReader inReader=new InputStreamReader(in);
//包装了BufferedReader
BufferedReader br=new BufferedReader(inReader);
//按行读取文件
String content=null;
while((content=br.readLine() )!= null)
{
s.append(content);
}
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return s.toString();
}
//这个是关键代码,通过使用Jsoup实现挑选想要的内容
public static String SelectText(String html)
{
//通过外部的jsoup外接包里的函数获取HTML里的内容
//创建一个“文件”document文件
org.jsoup.nodes.Document doc=Jsoup.parse(html);
//在文件里根据Class获取文件
Elements content=doc.getElementsByClass("comment-item");
//创建一个容器保存筛选出来的文本
StringBuffer sb=new StringBuffer();
//Elements其实是一个list里面的内容都是Elenent,
for(Element link:content)
{
//这一句的意思是,获取子节点下的子节点取出文字内容!!!!!!!!!!!!
sb.append(link.child(1).child(1).text()+"\r\n");
//System.out.println();
}
return sb.toString();
}
public static void saveText(String data,String file)
{
BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter(file));
bw.write(data);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以参考官方的文档: 点击打开链接
当然还有其他的一些方法比如取出所有图片可以用
Elements content=doc.getElementsByTag("img");//根据标签名字获取相同的标签
String imgSrc = element.attr("abs:src");//获取所有图片的绝对路径!!
好了简单的爬虫软件就做好了,可以进行下一步大数据统计了!!!!