`

java写的简单爬虫程序

    博客分类:
  • java
阅读更多
为了测试文本聚类算法,老板让每人就某一话题找1000篇新闻,,“你们没有爬虫??那就自己用手复制吧,3天复制完!”

    好吧,那就写个爬虫吧~查资料+编码一下午搞定,写的非常简陋,只能爬新浪军事板块的文章,不怕大家笑话了,哈哈~

package com.slimspider;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.visitors.TextExtractingVisitor;

import com.slimspider.utils.StringURLQueue;

/**
 * 
 * Just for sina military section
 * 
 * @author LiangTE
 *
 */

public class Main {

	private static int num = 0;
	
	public static void crawler(String url) {
		HttpClient httpClient = new DefaultHttpClient();
		
		StringURLQueue queue = StringURLQueue.getInstance();
		
		List<String> deprecatedURLs = new ArrayList<String>();
		
		try {
			HttpGet httpget = new HttpGet(url);

			HttpResponse response = httpClient.execute(httpget);

			HttpEntity entity = response.getEntity();

			String body = EntityUtils.toString(entity, "gbk");
			
			/**
			 * 
			 * 抓取当前页面的正文
			 * 
			 */
			String totalContent = body.substring(body.indexOf("<!-- publish_helper"), body.indexOf("<!-- publish_helper_end -->"));

			String text = totalContent.substring(totalContent.indexOf("<p>"),
					totalContent.indexOf("<style type"));
			
			if(totalContent.indexOf("<div class=\"otherContent") != -1) {
				String links = totalContent.substring(totalContent.indexOf("<div class=\"otherContent"));

				Parser parser = new Parser(text);

				TextExtractingVisitor visitor = new TextExtractingVisitor();

				parser.visitAllNodesWith(visitor);

				String resu = visitor.getExtractedText();
				
				FileWriter fw = new FileWriter("D:/resu/m" + ++num + ".txt");
				
				BufferedWriter bw = new BufferedWriter(fw);
				
				bw.write(resu);
				
				bw.close();
				
				fw.close();
				
				System.out.println(resu);
				
				/**
				 * 
				 * 抓取当前页面的url
				 * 
				 */
				NodeFilter filter = new TagNameFilter("a");

				Parser parser2 = new Parser(links);

				NodeList nodeList = parser2.extractAllNodesThatMatch(filter);

				int len = nodeList.size();
				
				for (int i = 0; i < len; i++) {
					LinkTag tag = (LinkTag) nodeList.elementAt(i);
					String newUrl = tag.extractLink();
					if(!deprecatedURLs.contains(newUrl)) {
						if(newUrl.startsWith("http://mil.news.sina.com.cn")) {
							queue.enQueue(newUrl);
						}
					}
				}
				
				String targetUrl = queue.deQueue();
				
				deprecatedURLs.add(targetUrl);
				
				crawler(targetUrl);
			}
			
			crawler(queue.deQueue());
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			httpClient.getConnectionManager().shutdown();
		}
	}
	
	
	public static void main(String[] args) {
		
		crawler("http://mil.news.sina.com.cn/2012-10-23/0913704471.html");
		
	}

}




原文链接:http://my.oschina.net/liangtee/blog/84869
分享到:
评论

相关推荐

    java手写网络爬虫

    一个简单的网络爬虫小程序 java 源代码

    简单的java爬虫程序

    这是个完整的java爬虫程序,可以从一个指定的种子url开始以b广度优先的原则趴下相关的网页,保存在硬盘上

    java写爬虫代码

    超简单的 Web 爬虫程序,不过可以在他基础之上改造一下,写出强大点的爬虫!  谢谢提供程序的 blog 友!  //一直在使用和写PHP spider的爬虫程序。如果用JAVA写的话前台可以加入spider 页面 但是jaxa部分要删去,...

    java实现一个简单爬虫程序

    java实现一个简单的网络爬虫程序,可以抓取网页,并输出网页源代码

    Java编写的简单爬虫程序

    一个java编写的简单爬虫程序,可以实现通过Socket保存html网页 去乱码 存储当前页面URL 自动顺序抓取页面

    java爬虫简单实现

    java实现的爬虫程序,有基本的逻辑思路及相应的代码

    简单的爬虫程序

    java写的简单爬虫程序,可以进行简单的爬虫,不过功能没有特别完善

    java爬虫.zip

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密.java爬虫程序。web搜索。爬虫程序。sigar搜索,定时搜索互联网内容信息。

    java实现的简单的爬虫程序

    可以用的java爬虫程序,你可以直接在eclipse里面输入,然后执行!

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密.java爬虫程序。web搜索。爬虫程序。sigar搜索,定时搜索互联网内容信息。

    java基于jsoup+mongodb的简单爬虫入门程序

    java基于jsoup+mongodb的简单爬虫入门程序,简单易懂,希望能给大家提供帮助

    用JAVA写的爬虫蜘蛛,学习使用

    一个JAVA开发的简单网络爬虫 可以实现对指定站点新闻内容的获取 程序很简单 大家一起学习

    简单java爬虫程序

    爬取youku网页上内容,并进行得到的结果进行过滤.

    多线程实现的Java爬虫程序

    以下是一个Java爬虫程序,它能从指定主页开始,按照指定的深度抓取该站点域名下的网页并维护简单索引。  参数:private static int webDepth = 2;//爬虫深度。  主页的深度为1,设置深度后超过该深度的网页不会...

    用java写的爬虫代码

    这是一个简单的Java网络蜘蛛的小程序,里面有他的详细代码

    一个简单的java爬虫产品

     后来google了一下,找到了一个简单爬虫的程序代码(http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html),随即试验了一下,发现确实能得到网页的内容,在这里还是要谢谢代码的提供者——Jack.Wang...

    java爬虫程序

    Arachnid:是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用...

    Java_net_spider_source.zip_Java spider_网络 爬虫 程序

    一个JAVA开发的简单网络爬虫 可以实现对指定站点新闻内容的获取 程序很简单 大家一起学习

    Java网络爬虫简单实现

    Java网络爬虫简单实现,一个简单的爬虫,可以运行,程序简单,适合入门级的人看

Global site tag (gtag.js) - Google Analytics