壁画不多说
网络爬虫就是一种应用程序,可以在查找到指定的信息。
知识需求:
- 正则表达式
- IO流操作
- URL的应用
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NetSpideDemo {
public static void main(String[] args) throws Exception {
// 网页爬虫:就是一个应用程序,获取网页中的指定信息(符合指定的信息)
//从本地文件搜索信息
File file=new File("E:\\IDea项目\\正则表达式\\src\\Text.txt");
String regex="\\w+@\\w+(\\.\\w+)+";
List<String> list2=GetHostINFo(file,regex);
for (String s:list2)
{
System.out.println(s);
}
/*从指定网址找到想要的信息*/
String url_str="https://www.bilibili.com/video/av36206436?p=28";
String regex2="\\w+@\\w+(\\.\\w+)+";
List<String> list3=GetNetINFo(url_str,regex2);
for (String s:list3)
{
System.out.println(s);
}
}
private static List<String> GetNetINFo(String url_str, String regex2) throws Exception {
List<String> list=new ArrayList<String>();
Pattern pattern=Pattern.compile(regex2);//将正则表达式封装成对象
URL url=new URL(url_str);
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in));
String line=null;
while (((line=bufferedReader.readLine()))!=null)
{
Matcher matcher=pattern.matcher(line);
while (matcher.find()) {
list.add(matcher.group());
}
}
return list;
}
/*
* 从本地文件中找到指定的信息
* 比如:邮箱。
* */
private static List<String> GetHostINFo(File file, String regex) throws IOException {
// 创造集合
List<String> list=new ArrayList<String>();
// 零时储存
Pattern p=Pattern.compile(regex);
// 读取文件
FileReader fileReader=new FileReader(file);
BufferedReader bufferedReader=new BufferedReader(fileReader);
String line=null;
while((line=bufferedReader.readLine())!=null)
{
Matcher m=p.matcher(line);
while (m.find())
{
// System.out.println(m.group());
list.add(m.group());
}
}
return list;
}
}
问题来了:
我本地文件可以读取到指定信息——邮箱
但是
我用URL从网上就读不出来,没有报异常
真是一件神奇的事情 艹。