题外话main中输出
for(int b:a)
{
System.out.println(b);
}遍历a这个容器,把它的元素取出来,赋值给b这个临时变量,然后将b打印出来。
按大神操作步骤修改之,运行
卧槽,必须得上图纪念一下了
非常好
ok 上代码:
FileReaderWriter.java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderWriter {
//创建文件的函数createNewFile
public static boolean createNewFile(String filePath) {
boolean isSuccess = true;
// 如有则将"\\"转为"/",没有则不产生任何变化
String filePathTurn = filePath.replaceAll("\\\\", "/");
// 先过滤掉文件名
int index = filePathTurn.lastIndexOf("/");
String dir = filePathTurn.substring(0, index);
// 再创建文件夹
File fileDir = new File(dir);
isSuccess = fileDir.mkdirs();
// 创建文件
File file = new File(filePathTurn);
try {
isSuccess = file.createNewFile();
} catch (IOException e) {
isSuccess = false;
e.printStackTrace();
}
return isSuccess;
}
//写入文件的函数
public static boolean writeIntoFile(String content, String filePath,
boolean isAppend) {
boolean isSuccess = true;
// 先过滤掉文件名
int index = filePath.lastIndexOf("/");
String dir = filePath.substring(0, index);
// 创建除文件的路径
File fileDir = new File(dir);
fileDir.mkdirs();
// 再创建路径下的文件
File file = null;
try {
file = new File(filePath);
file.createNewFile();
} catch (IOException e) {
isSuccess = false;
e.printStackTrace();
}
// 写入文件
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(file, isAppend);
fileWriter.write(content);
fileWriter.flush();
} catch (IOException e) {
isSuccess = false;
e.printStackTrace();
} finally {
try {
if (fileWriter != null)
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return isSuccess;
}
}
Cfsn.java
public class Cfsn {
public String title; //新闻标题
public String CfsnUrl ;//网页链接
//构造方法初始化数据
public Cfsn(){
title = "" ;
CfsnUrl = "" ;
}
//格式化写入到本地时的排版
public String writeString() {
String result = "";
result += "问题:" + title + "\r\n";
result += "链接:" + CfsnUrl + "\r\n";
result += "\r\n\r\n";
return result;
}
@Override
public String toString(){
return "标题:"+title+"\n链接:"+CfsnUrl+"\n";
}
}
Spider.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//Spider类来存放一些爬虫常用的函数。
public class Spider {
static String SendGet(String url) {
// 定义一个字符串用来存储网页内容
String result = "";
// 定义一个缓冲字符输入流
BufferedReader in = null;
try {
// 将string转成url对象
URL realUrl = new URL(url);
// 初始化一个链接到那个url的连接
URLConnection connection = realUrl.openConnection();
// 开始实际的连接
connection.connect();
// 初始化 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream(), "UTF-8"));
// 用来临时存储抓取到的每一行的数据
String line;
while ((line = in.readLine()) != null) {
// 遍历抓取到的每一行并将其存储到result里面
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
static ArrayList<Cfsn> GetCfsn(String content) {
// 预定义一个ArrayList来存储结果
ArrayList<Cfsn> results = new ArrayList<Cfsn>();
// 用来匹配标题
Pattern questionPattern = Pattern.compile("_blank\">(.+?)<");
Matcher questionMatcher = questionPattern.matcher(content);
// 用来匹配url,也就是问题的链接
Pattern urlPattern = Pattern.compile("span><a href=\"(.+?)\"");
Matcher urlMatcher = urlPattern.matcher(content);
// 标题和链接要均能匹配到
boolean isFind = questionMatcher.find() && urlMatcher.find();
while (isFind) {
// 定义一个知乎对象来存储抓取到的信息
Cfsn zhuhuTemp = new Cfsn();
zhuhuTemp.title = questionMatcher.group(1);
zhuhuTemp.CfsnUrl = "http://www.cfsn.cn/news/" + urlMatcher.group(1);
// 添加成功匹配的结果
results.add(zhuhuTemp);
// 继续查找下一个匹配对象
isFind = questionMatcher.find() && urlMatcher.find();
}
return results;
}
}
Main.java
import java.util.ArrayList;
public class Main {
public static void main(String args[]) {
// 定义即将访问的链接
String url = "http://www.cfsn.cn/news/node_4534.htm";
// 访问链接并获取页面内容
String content = Spider.SendGet(url);
// 获取该页面的所有的Cfsn对象
ArrayList<Cfsn> myCfsn = Spider.GetCfsn(content);
// 打印结果
// 写入本地
for (Cfsn cfsn : myCfsn) {
FileReaderWriter.writeIntoFile(cfsn.writeString(),
"D:/中国食品安全网.txt", true);
}
}
}
接下来将其搞到数据库中就得靠自己咯 [哭泣][哭泣][哭泣]
——未完待续——