黑马程序员技术交流社区
标题:
一个递归的网页邮箱爬虫demo,求大神帮忙修改!!
[打印本页]
作者:
ZSMAN
时间:
2015-5-6 11:33
标题:
一个递归的网页邮箱爬虫demo,求大神帮忙修改!!
本帖最后由 ZSMAN 于 2015-5-6 11:36 编辑
import java.io.*;
import java.net.*;
import java.util.regex.*;
public class TEST {
private String url_Rege;//url规则
private String mail_Rege;//邮箱规则
static int num=2;//控制递归深度
public TEST() {
url_Rege="http://\\w+\\.\\w+\\.\\w+\\.\\w+(/\\w*)*";
mail_Rege="\\w+@\\w+(\\.\\w+)+";
}
public void getMail(String Url) throws Exception {//递归函数
System.out.println("----------------"+num);
num--;
URL url=new URL(Url);
URLConnection conn=url.openConnection();
BufferedReader bufr=new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line=null;
Pattern p=Pattern.compile(url_Rege);
Pattern p1=Pattern.compile(mail_Rege);
while((line=bufr.readLine())!=null) {
Matcher m1=p1.matcher(line);
while(m1.find())
System.out.println(m1.group());//输出邮箱
if(num>0) {//没达到深度时
Matcher m=p.matcher(line);
while(m.find()) {
//System.out.println(m.group()+num);
getMail(m.group());//递归
num++;
}
}
}
bufr.close();
}
public static void main(String[] args)throws Exception {
new TEST().getMail("http://tieba.baidu.com/p/3699274777");
}
}
复制代码
写了一个递归的网页邮箱爬虫demo,按层递归。思路是传入一个url,读取一行内容,找到里面的邮箱和其他url。如果有其他url,就按前面的步骤递归一次。控制递归的是一个静态成员变量。结果这个只能爬取当前页面的邮箱,有时还有服务器500异常~应该是这个递归写错了,求大神指点!!(按行读取会出现正则获取错误,请无视!)
作者:
ZSMAN
时间:
2015-5-6 14:27
自己顶一个!
作者:
fantacyleo
时间:
2015-5-6 18:19
按行读取网页html代码的方式不可取。效率且不论,万一一个邮箱或网页地址被断成2行怎么办?我知道python是有直接读取全部html的函数,java应该也有,百度一下吧
作者:
ZSMAN
时间:
2015-5-6 18:52
fantacyleo 发表于 2015-5-6 18:19
按行读取网页html代码的方式不可取。效率且不论,万一一个邮箱或网页地址被断成2行怎么办?我知道python是 ...
我知道按行读取是不正确的,实验中已经出错了~现在的主要问题是这个递归写的不对,这个程序连截获的正确URL都读不了~~
作者:
ZSMAN
时间:
2015-5-7 11:04
求大神帮忙改一下啊~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2