`

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爬虫程序"提供了从指定URL开始,按照广度优先策略抓取网页并保存到硬盘的功能。下面我们将深入探讨相关知识点。 1. **广度优先搜索(Breadth-First Search, BFS)** 广度优先搜索是图论中的一种算法...

    Java网络爬虫程序(源程序和数据库文件)

    在这个"Java网络爬虫程序(源程序和数据库文件)"中,我们看到的是一个完整的爬虫项目,它能够从指定的网页抓取`Title`标签的内容,并将这些信息存储到SQL数据库中。以下是对这个项目中涉及的关键知识点的详细说明:...

    使用java实现的爬虫程序

    Java爬虫程序是一种利用编程语言(本例中是Java)编写的应用,用于自动化地从互联网上抓取数据。58同城是中国一个知名的分类信息网站,提供了包括租房、求职、二手物品交易等多种生活服务信息。使用Java爬虫可以方便...

    java实现一个简单爬虫程序

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

    爬虫程序爬虫程序 java 数据挖掘

    根据给定文件的信息,我们可以提炼出以下关于Java爬虫程序及数据挖掘的相关知识点: ### Java爬虫程序概览 #### 一、Sosoo爬虫框架简介 Sosoo是一款用Java编写的开源网络爬虫框架,适用于进行大规模的数据抓取任务...

    Java编写的简单爬虫程序

    Java编写的简单爬虫程序是一种基础的网络数据抓取工具,它主要利用Java语言的特性,结合网络编程的原理,实现对网页内容的自动化获取。在这个项目中,爬虫程序运用了Socket通信来与服务器建立连接,从而获取HTML网页...

    java简单网络爬虫

    Java简单网络爬虫是一种利用编程技术自动从互联网上抓取信息的程序。在这个项目中,我们专注于使用Java语言来创建一个基本的网络爬虫,它能够访问智联招聘网站,并提取出职位名称、公司名称、工作地点以及薪资等关键...

    java实现的简单的爬虫程序

    由于未提供具体的内容部分,我将直接针对标题和描述中提到的“java实现的简单的爬虫程序”展开讨论,涵盖相关的知识点。 ### Java基础 在谈论Java爬虫之前,需要对Java编程语言有一个基础了解。Java是一种广泛使用...

    一个用java写的爬虫,不依赖其他包

    Java编写的爬虫程序是一种用于自动化网络数据抓取的工具,它可以遍历网页,提取所需信息,而无需依赖外部库。这种爬虫的实现通常基于Java的基础类库,如URL、HttpURLConnection、InputStream等,这使得程序更加轻量...

    简单的爬虫程序

    【描述】"java写的简单爬虫程序,可以进行简单的爬虫,不过功能没有特别完善"进一步指出,这个爬虫程序是用Java语言编写的,Java以其跨平台性和强大的库支持,是编写爬虫的理想选择。"简单爬虫"意味着它可能包含基本...

    用Java实现网络爬虫(或互联网蜘蛛)

    在IT领域,网络爬虫(也称为互联网蜘蛛)是一种自动遍历互联网的程序,用于抓取网页信息。本文将深入探讨如何使用Java语言实现一个基本的网络爬虫,并结合`Future`接口,介绍多阶段流水线的异步执行机制。 首先,让...

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

    【标题】"用JAVA写的爬虫蜘蛛,学习使用"揭示了这个项目的核心是使用Java语言构建的一个网络爬虫程序。网络爬虫,也被称为“蜘蛛”或“机器人”,是一种自动遍历互联网并抓取网页信息的程序。在IT领域,爬虫被广泛...

    java-网络爬虫.zip

    在这个项目中,`java写小爬虫程序.java`很可能包含了这些核心组件的实现。代码可能使用了Java的`java.net.URL`类来处理URL,`java.io`包进行文件读写,以及可能使用了`Jsoup`库来解析HTML文档,因为`Jsoup`是Java...

    简单java爬虫程序

    Java爬虫程序是一种利用编程语言(本例中是Java)自动化地从互联网上抓取信息的工具。在Java中,我们可以使用多种库来构建爬虫,例如Jsoup、Apache HttpClient和HtmlUnit等。这里我们将主要关注Jsoup,因为它易于...

    java爬虫教程及工具应用

    Jaunt是一个基于Java的Web爬虫框架,它可以帮助开发者轻松构建复杂的爬虫程序。 - **特点**: - 支持异步执行。 - 提供了丰富的API,便于进行页面解析和数据抓取。 ##### 3.3 WebMagic WebMagic是一款简单易用...

    简易版Java爬虫

    首先,Java作为一种流行的编程语言,拥有丰富的库和框架,使得开发爬虫变得相对简单。在这个简易版的Java爬虫中,可能使用的工具有Jsoup或Apache HttpClient等,它们提供了抓取网页HTML、解析DOM结构以及发送HTTP...

    一个用java语言编写的网络爬虫程序

    Java编程语言在网络爬虫开发中占据着重要地位,它的强大功能和灵活性使得开发者能够构建复杂的爬虫系统。...对于有兴趣深入学习的人来说,这个Java编写的网络爬虫程序将是一个很好的实践和学习素材。

    java爬虫简单实现

    在Java中,我们可以利用各种库来构建一个简单的爬虫,例如Jsoup、Apache HttpClient、WebMagic等。以下是对Java爬虫实现的一些关键知识点的详细说明: 1. **HTTP请求与响应**: - Java中的`HttpURLConnection`类...

    Java编写的模拟网络爬虫的小程序

    【Java编写的模拟网络爬虫小程序】 网络爬虫是一种自动抓取互联网信息的程序,它按照一定的规则在网站上遍历网页,收集所需的数据。在Java编程语言中,实现一个简单的网络爬虫并不复杂,主要涉及到的技术包括HTTP...

Global site tag (gtag.js) - Google Analytics