4

我正在做一个项目,该项目需要用 Java 设计一个网络爬虫,它可以获取用户对特定新闻主题的查询,然后访问不同的新闻网站,然后从这些页面中提取新闻内容并将其存储在一些文件/数据库中。我需要这个来总结整个存储的内容。我是这个领域的新手,所以希望有经验的人提供一些帮助。

现在我有代码从手动获取页面的单个页面中提取新闻内容,但我不知道如何将它集成到网络爬虫中以从不同页面中提取内容。

任何人都可以提供一些很好的 Java 教程或实现的链接,我可以根据需要使用或修改它们吗?

4

5 回答 5

8

http://jsoup.org/

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
于 2012-04-04T20:04:36.023 回答
5

除了其他答案之外,还有一点建议 - 确保您的爬虫尊重robots.txt(即不会快速和不分青红皂白地爬取网站),否则您可能会让您自己/您的组织被您想要访问的网站阻止。

于 2012-04-04T21:52:38.120 回答
3

以下是一些大多数人会推荐的开源 Java 库,

我个人最喜欢的是 Java Web Crawler,因为它的速度和易于配置。

顺便说一句,如果它不是那么大,对于一项任务,如果您的源网站不经常更改,我建议您实现一个简单的 HTML 解析器。

希望它会有所帮助

于 2012-04-04T20:10:03.243 回答
0

我建议您在这里查看我的答案:如何在我的应用程序(网络或控制台)中带来类似谷歌的重新抓取设计网络爬虫

第一个答案是针对 C# 问题提供的,但它实际上是与语言无关的答案,因此它也适用于 Java。查看我在两个答案中提供的链接,有一些很好的阅读材料。我还要说你应该尝试一个已经存在的java爬虫,而不是自己写一个(这不是一个小项目)。

... java 中的网络爬虫,可以获取用户对特定新闻主题的查询,然后访问不同的新闻网站,然后从这些页面中提取新闻内容并将其存储在一些文件/数据库中。

这一要求似乎超越了“只是一个爬虫”的范围,进入了机器学习和自然语言处理领域。如果您有一个确定它们为其提供新闻的网站列表,那么您可能能够提取新闻内容。然而,即便如此,您也必须确定网站的哪些部分是新闻,哪些不是(即可能还有链接、广告、评论等)。那么,您在这里究竟面临着什么样的要求?你有新闻网站的列表吗?你有可靠的方法来提取新闻吗?

于 2012-04-04T20:06:25.803 回答
0

当我阅读有关 Web Crawlers 的信息时,我发现这篇文章非常有帮助。

它提供了开发多线程爬虫的分步指南。

本质上,以下是爬虫应该做什么的一个非常高级的视图

- Insert first URL in the queue

Loop until enough documents are gathered:
   - Get first URL from the queue and save the document
   - Extract links from the saved document and insert them in the queue
于 2012-04-04T20:39:50.953 回答