黑马程序员技术交流社区

标题: 网页爬虫 [打印本页]

作者: 吴通    时间: 2012-9-18 08:30
标题: 网页爬虫
import java.io.*;
import java.util.regex.*;
import java.net.*;
class PaChong
{
public static void main(String[] args)throws Exception
{
  //getMails();
  getInternet();
}
//
获取网页信息

public static void getInternet()throws Exception
{
  URL url=new URL(
http://m550.mail.qq.com/cgi-bin/frame_html?sid=NZ738NpnWum8blMD&r);
  URLConnection conn=url.openConnection();
  BufferedReader bufIn=
   new BufferedReader(new InputStreamReader(conn.getInputStream()));
  String line=null;
  String intreg="
\\w+@\\w+(\\.\\w+)+";
  Pattern p=Pattern.compile(intreg);
  while((line=bufIn.readLine())!=null)
  {
   Matcher m=p.matcher(line);
   while(m.find())
   {
    System.out.println(m.group());
   }
  }
}
//
获取邮件信息
public static void getMails()throws Exception
{
  BufferedReader bufr=
   new BufferedReader(new FileReader("mail.txt"));
  String line=null;
  String mailreg="
\\w+@\\w+(\\.\\w+)+";
  Pattern p=Pattern.compile(mailreg);
  while((line=bufr.readLine())!=null)
  {
   Matcher m=p.matcher(line);
   while(m.find())
   {
    System.out.println(m.group());
   }
  }
}
}

通过正则表达式来匹配网页中的特定内容,从而可以获取想要的内容,
老师讲过像百度这种搜索网站就使用这种爬虫,获取网页上的内容,
但是我们获取网页每一次都需要传入网址和正则的类型,那么这么多的
网页不是都得有针对性的爬虫,那么这个工作量岂不是很大?
是不是还有其他什么方法啊?

作者: 郑枫    时间: 2012-9-18 16:16
{:soso_e101:}   没明白您的意思, 我练习的时候只输入网站就OK了, 给你顶上去 让高手解决
作者: 田建    时间: 2012-9-18 18:45
既然你想实现通用的话,将网络地址和正则表达式作为参数传递给方法,再进行设计即可!
作者: 史小兵    时间: 2012-9-18 20:40
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性。比如通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询等问题。
未解决这些问题人们研究出了一些解决的策略,网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入问题,目前常见的是广度优先和最佳优先方法。
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。
最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。
基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式再用“过滤器来过滤”,因此你可以将其映射为目标数据模式。
在你使用这些设计策略时,你就不会有上边的疑问了。这两种策略的具体实现建议你还是上网搜一下。仔细看一下!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2