第一次数据抓取

来源:互联网 发布:网络教育9月几号入学 编辑:程序博客网 时间:2024/06/07 15:24
package com.edu.test;


import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.util.Scanner;


import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;




/**
 * 烟大数据抓取并保存
 * @author Administrator
 *
 */
public class YandaDataSave {


public static Scanner in=new Scanner(System.in);
public static final String url="http://computer.ytu.edu.cn/news/jsj.php?c=article&a=type&tid=50";
public static final int timeout=10000;

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//第一步进入数据抓取平台
System.out.println("欢迎进入数据查询平台");


//1.抓去a标签数据 2.抓去图片数据 3.抓去标题数据
//是否继续(y/n)
//如果选y弹出选项1.抓去a标签数据2.抓去图片数据3.抓去标题数据
//如果选n,退到1.登录 2.退出
login();
}

/**
* 登录操作
*/
public static void login() {
//1.登录 2.退出
System.out.print("1.登录\t2.退出");
int code=in.nextInt();
switch (code) {
case 1:
//登录
//选择操作
choose();
break;


case 2:
//退出
System.out.println("谢谢使用,再见");
break;
}
}

/**
* 选择操作
*/
public static void choose() {
String y="y";
do{
System.out.println("请选择要抓取得数据类型");
System.out.print("1.超链接数据\t2.图片数据  \t3.标题数据  \t4.文本内容  \t5.保存新闻内容");
int code=in.nextInt();
switch (code) {
case 1:
//抓取a标签数据
Ahandler();
break;
case 2:
//抓取图片
Imghandler();
break;
case 3:
//抓取标题
Titlehandler();
break;
case 4:
//抓取内容
MainWrite();
case 5:
NewsReader();
}
System.out.print("是否继续(y/n)");
y=in.next();
} while(y.equals("y"));
login();
}

/**
* 抓取a标签
*/
public static void Ahandler() {
try {

System.out.println("正在读取信息...");
//通过字符流写入数据
FileWriter fw=new FileWriter("E:/jsoup/a.txt");
Document document=Jsoup.connect(url).timeout(timeout).get();
Elements eles=document.getElementsByTag("a");
String allhref="";
for(int i=0;i<eles.size();i++) {
Element e=eles.get(i);
String href=e.attr("abs:href");
allhref+=href+"\r\n";
}
fw.write(allhref);
fw.flush();
fw.close();
System.out.println("保存a标签成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 抓取标题
*/
public static void Titlehandler() {
try {
System.out.println("正在读取信息...");
//通过字符流写入数据
FileWriter fw=new FileWriter("E:/jsoup/title.txt");
Document document=Jsoup.connect(url).timeout(timeout).get();
Elements eles=document.getElementsByTag("");
String allhref="";
for(int i=0;i<eles.size();i++) {
Element e=eles.get(i);
//获取文本内容
String href=e.html();
allhref+=href+"\r\n";
}
fw.write(allhref);
fw.flush();
fw.close();
System.out.println("保存标题成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 抓取图片
*/
public static void Imghandler() {
try {
System.out.println("正在读取信息...");
//通过字符流写入数据
Document document=Jsoup.connect(url).timeout(timeout).get();
Elements eles=document.getElementsByTag("img");
for(int i=0;i<eles.size();i++) {
Element e=eles.get(i);
//获取文本内容
String src=e.attr("abs:src");
//保存图片
URL url=new URL(src);
URLConnection contection=url.openConnection();
//得到下载的图片流
InputStream is=contection.getInputStream();
//获取后缀名
           String imageName = src.substring(src.lastIndexOf("/") + 1,src.length());
FileOutputStream fos=new FileOutputStream("E:/jsoup/"+imageName);
byte[] b=new byte[is.available()];
while(is.read(b)!=-1) {
fos.write(b);
}
fos.flush();
fos.close();
is.close();
}
System.out.println("保存图片成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**

*/
public static void MainWrite(){
try {
System.out.println("正在读取信息...");
FileWriter fw=new FileWriter("E:/jsoup/1.txt");
Document document=Jsoup.connect(url).timeout(timeout).get();
String str=document.text();
fw.write(str);
fw.flush();
fw.close();
System.out.println("文本内容保存成功");
           
       } catch (IOException e) {
           System.out.println("Error" + e);
       }
}
//保存新闻内容
public static void NewsReader(){
System.out.println("正在读取信息...");
try {
for(int i=0;i<17;i++){
String url1="http://computer.ytu.edu.cn/news/jsj.php?c=article&a=type&tid=50&page=%i";
Document document=Jsoup.connect(url1).timeout(timeout).get();
String str=document.html();
str = str.substring(str.indexOf("<li><span>"), str.indexOf("<ul class=\"c pages\">")).replaceAll("</ul>", "");
        String[] strArray = str.split("<li><span>");
for (String s : strArray) {
if (s.length() > 0){
                s = s.replaceAll("</a></li>", "").replaceAll("\r\n", "");
               String x=new String(s.substring(s.indexOf("["), s.indexOf("]") + "]".length()) + s.substring(s.lastIndexOf(">") + ">".length(), s.length())).trim();
               FileWriter out1 = new FileWriter("E:/jsoup/"+x+".txt");
            x=new String("http://computer.ytu.edu.cn"+s.substring(s.indexOf("</span><a href=\"")+"</span><a href=\"".length(), s.indexOf("\" style=\"")).replace("amp;", ""));
                   Document document1=Jsoup.connect(x).timeout(timeout).get();
                   String str1 = document1.text();
                   str1=str1.substring(str1.indexOf("点击:")+"点击:".length(),str1.indexOf("上一篇:")).replaceAll("&nbsp;", "");
                   out1.write(str1);
                   out1.flush();
                   out1.close();
}
        }
}
System.out.println("文章保存成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
原创粉丝点击