繁体   English   中英

如何在Java中设计一个web爬虫?

[英]How to design a web crawler in Java?

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

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

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

http://jsoup.org/

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");

除了其他答案之外的一个建议 - 确保您的抓取工具尊重robots.txt (即不会快速和不加区别地抓取网站),否则您可能会让自己/您的组织被您想要访问的网站阻止。

这里有一些大多数人会推荐的开源 Java 库,

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

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

希望它会有所帮助

我建议您在这里查看我的答案: How can I bring google-like recrawling in my application(web or console) and Designing a web crawler

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

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

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

当我阅读有关 Web 爬虫的文章时,我发现 这篇文章非常有用。

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

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

- 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM