我正在做一个项目,该项目需要用 Java 设计一个网络爬虫,它可以获取用户对特定新闻主题的查询,然后访问不同的新闻网站,然后从这些页面中提取新闻内容并将其存储在一些文件/数据库中。我需要这个来总结整个存储的内容。我是这个领域的新手,所以希望有经验的人提供一些帮助。
现在我有代码从手动获取页面的单个页面中提取新闻内容,但我不知道如何将它集成到网络爬虫中以从不同页面中提取内容。
任何人都可以提供一些很好的 Java 教程或实现的链接,我可以根据需要使用或修改它们吗?
我正在做一个项目,该项目需要用 Java 设计一个网络爬虫,它可以获取用户对特定新闻主题的查询,然后访问不同的新闻网站,然后从这些页面中提取新闻内容并将其存储在一些文件/数据库中。我需要这个来总结整个存储的内容。我是这个领域的新手,所以希望有经验的人提供一些帮助。
现在我有代码从手动获取页面的单个页面中提取新闻内容,但我不知道如何将它集成到网络爬虫中以从不同页面中提取内容。
任何人都可以提供一些很好的 Java 教程或实现的链接,我可以根据需要使用或修改它们吗?
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
除了其他答案之外,还有一点建议 - 确保您的爬虫尊重robots.txt
(即不会快速和不分青红皂白地爬取网站),否则您可能会让您自己/您的组织被您想要访问的网站阻止。
我建议您在这里查看我的答案:如何在我的应用程序(网络或控制台)中带来类似谷歌的重新抓取和设计网络爬虫
第一个答案是针对 C# 问题提供的,但它实际上是与语言无关的答案,因此它也适用于 Java。查看我在两个答案中提供的链接,有一些很好的阅读材料。我还要说你应该尝试一个已经存在的java爬虫,而不是自己写一个(这不是一个小项目)。
... java 中的网络爬虫,可以获取用户对特定新闻主题的查询,然后访问不同的新闻网站,然后从这些页面中提取新闻内容并将其存储在一些文件/数据库中。
这一要求似乎超越了“只是一个爬虫”的范围,进入了机器学习和自然语言处理领域。如果您有一个确定它们为其提供新闻的网站列表,那么您可能能够提取新闻内容。然而,即便如此,您也必须确定网站的哪些部分是新闻,哪些不是(即可能还有链接、广告、评论等)。那么,您在这里究竟面临着什么样的要求?你有新闻网站的列表吗?你有可靠的方法来提取新闻吗?
当我阅读有关 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