免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1213 | 回复: 0
打印 上一主题 下一主题

(2)爬行策略------如何设计一个简洁的web抓取引擎 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-26 14:40 |只看该作者 |倒序浏览
(2)爬行策略------如何设计一个简洁的web抓取引擎
tomqq 2008-10-26
首先说一下使用http类来下载和保存一个httm的资源,比如图片,文件等等。
用java完成是这样子写的:
/*
     * Download a url source and write into d_file
     * */
    public static void getResource(String s_url, String d_file){
        try{
            URL url = new URL(s_url);
            HttpURLConnection httpurl = (HttpURLConnection)url.openConnection();
            httpurl.connect();
            BufferedInputStream in = new BufferedInputStream(httpurl.getInputStream());
            FileOutputStream out = new FileOutputStream(d_file);
            byte[] buf = new byte[1024];
            int size = 0;
            while((size=in.read(buf))!=-1){
                out.write(buf, 0, size);
            }
            in.close();
            out.close();
        }catch(Exception e){
            System.out.println("Error url: " + s_url);
            try{
                BufferedWriter rw = new BufferedWriter(new FileWriter("e:\\jitapu\\error.txt",true));
                rw.write(s_url+"\n");
                rw.close();
            }catch(Exception e2){
                e2.printStackTrace();
            }
            e.printStackTrace();
        }
    }
    那么,剩下来的事情就是设计爬行的策略了。这就要具体问题具体分析了。理论上来讲,你需要找到一个或者若干个url,从这个url,你能够遍历全站,如果不能,那么任何一个搜索引擎的爬虫也做不到。我的办法是:从入口url,使用正则表达式逐级分析次级页面,每一个中间过程使用文件加以保存,直到最后达到你要的目标。具体过程主要是分析html,指定相应的规则,每一个网站是不一样的,这里就不在赘述了。
正则类似:
Pattern p = Pattern.compile(".*?.*?(.*?)");
                    Matcher m  = p.matcher(sb.toString());
                    while(m.find()){
                        content = m.group(1).trim();
                    }


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/68043/showart_1335590.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP