为了测试文本聚类算法,老板让每人就某一话题找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爬虫程序"提供了从指定URL开始,按照广度优先策略抓取网页并保存到硬盘的功能。下面我们将深入探讨相关知识点。 1. **广度优先搜索(Breadth-First Search, BFS)** 广度优先搜索是图论中的一种算法...
在这个"Java网络爬虫程序(源程序和数据库文件)"中,我们看到的是一个完整的爬虫项目,它能够从指定的网页抓取`Title`标签的内容,并将这些信息存储到SQL数据库中。以下是对这个项目中涉及的关键知识点的详细说明:...
Java爬虫程序是一种利用编程语言(本例中是Java)编写的应用,用于自动化地从互联网上抓取数据。58同城是中国一个知名的分类信息网站,提供了包括租房、求职、二手物品交易等多种生活服务信息。使用Java爬虫可以方便...
java实现一个简单的网络爬虫程序,可以抓取网页,并输出网页源代码
根据给定文件的信息,我们可以提炼出以下关于Java爬虫程序及数据挖掘的相关知识点: ### Java爬虫程序概览 #### 一、Sosoo爬虫框架简介 Sosoo是一款用Java编写的开源网络爬虫框架,适用于进行大规模的数据抓取任务...
Java编写的简单爬虫程序是一种基础的网络数据抓取工具,它主要利用Java语言的特性,结合网络编程的原理,实现对网页内容的自动化获取。在这个项目中,爬虫程序运用了Socket通信来与服务器建立连接,从而获取HTML网页...
Java简单网络爬虫是一种利用编程技术自动从互联网上抓取信息的程序。在这个项目中,我们专注于使用Java语言来创建一个基本的网络爬虫,它能够访问智联招聘网站,并提取出职位名称、公司名称、工作地点以及薪资等关键...
由于未提供具体的内容部分,我将直接针对标题和描述中提到的“java实现的简单的爬虫程序”展开讨论,涵盖相关的知识点。 ### Java基础 在谈论Java爬虫之前,需要对Java编程语言有一个基础了解。Java是一种广泛使用...
Java编写的爬虫程序是一种用于自动化网络数据抓取的工具,它可以遍历网页,提取所需信息,而无需依赖外部库。这种爬虫的实现通常基于Java的基础类库,如URL、HttpURLConnection、InputStream等,这使得程序更加轻量...
【描述】"java写的简单爬虫程序,可以进行简单的爬虫,不过功能没有特别完善"进一步指出,这个爬虫程序是用Java语言编写的,Java以其跨平台性和强大的库支持,是编写爬虫的理想选择。"简单爬虫"意味着它可能包含基本...
在IT领域,网络爬虫(也称为互联网蜘蛛)是一种自动遍历互联网的程序,用于抓取网页信息。本文将深入探讨如何使用Java语言实现一个基本的网络爬虫,并结合`Future`接口,介绍多阶段流水线的异步执行机制。 首先,让...
【标题】"用JAVA写的爬虫蜘蛛,学习使用"揭示了这个项目的核心是使用Java语言构建的一个网络爬虫程序。网络爬虫,也被称为“蜘蛛”或“机器人”,是一种自动遍历互联网并抓取网页信息的程序。在IT领域,爬虫被广泛...
在这个项目中,`java写小爬虫程序.java`很可能包含了这些核心组件的实现。代码可能使用了Java的`java.net.URL`类来处理URL,`java.io`包进行文件读写,以及可能使用了`Jsoup`库来解析HTML文档,因为`Jsoup`是Java...
Java爬虫程序是一种利用编程语言(本例中是Java)自动化地从互联网上抓取信息的工具。在Java中,我们可以使用多种库来构建爬虫,例如Jsoup、Apache HttpClient和HtmlUnit等。这里我们将主要关注Jsoup,因为它易于...
Jaunt是一个基于Java的Web爬虫框架,它可以帮助开发者轻松构建复杂的爬虫程序。 - **特点**: - 支持异步执行。 - 提供了丰富的API,便于进行页面解析和数据抓取。 ##### 3.3 WebMagic WebMagic是一款简单易用...
首先,Java作为一种流行的编程语言,拥有丰富的库和框架,使得开发爬虫变得相对简单。在这个简易版的Java爬虫中,可能使用的工具有Jsoup或Apache HttpClient等,它们提供了抓取网页HTML、解析DOM结构以及发送HTTP...
Java编程语言在网络爬虫开发中占据着重要地位,它的强大功能和灵活性使得开发者能够构建复杂的爬虫系统。...对于有兴趣深入学习的人来说,这个Java编写的网络爬虫程序将是一个很好的实践和学习素材。
在Java中,我们可以利用各种库来构建一个简单的爬虫,例如Jsoup、Apache HttpClient、WebMagic等。以下是对Java爬虫实现的一些关键知识点的详细说明: 1. **HTTP请求与响应**: - Java中的`HttpURLConnection`类...
【Java编写的模拟网络爬虫小程序】 网络爬虫是一种自动抓取互联网信息的程序,它按照一定的规则在网站上遍历网页,收集所需的数据。在Java编程语言中,实现一个简单的网络爬虫并不复杂,主要涉及到的技术包括HTTP...