第一次数据抓取

xiaoxiao2021-02-28  95

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(" ", "");                    out1.write(str1);                    out1.flush();                    out1.close(); }         } } System.out.println("文章保存成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
转载请注明原文地址: https://www.6miu.com/read-43078.html

最新回复(0)