我要从新闻网站上获取该文字 我必须获得1k网站内容
链接如下: http://www.dcfever.com/news/readnews.php?id=16727
此网站发布每条最新消息,新网址在ID中添加1
readnews.php?ID = 16727
所以,下一个网址将是
readnews.php?ID = 16728
问题是我想把文字从16000扫描到17000
如何在Java中实现
Jsoup?或其他网络爬虫?
谢谢
答案 0 :(得分:0)
您也标记了python
。在这里查看beautifulsoup
:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
答案 1 :(得分:0)
Jsoup是一个HTML解析器,可以帮助您抓取和解析HTML页面。如果你已经知道网站导航的模式,那么Jsoup就是好的。但是,如果您想要抓取网站的所有内容,最好利用某些抓取工具框架,例如Scrapy或Crawler4j。
首先,您需要确定从页面中抓取的内容。例如。主题,作者,内容。使用css选择器提取您想要的内容,例如subject:
@Grab('org.jsoup:jsoup:1.9.2')
org.jsoup.nodes.Document doc = org.jsoup.Jsoup.connect("http://www.dcfever.com/news/readnews.php?id=16727").get();
String subject = doc.select("body > div.site_wrapper > div.canvas > div:nth-child(5) > div > div.col-md-left.col-lg-left.read_article > h1").text();
您可以在groovy控制台中运行上面的代码,并获得如下结果:
世界首部中片幅無反相機 Hasselblad X1D 登場
答案 2 :(得分:0)
看看StormCrawler。实现您所描述的内容应该非常简单,大多数组件都是用Java实现的。您可以逐步生成URL列表并将其传递给MemorySpout或将它们放在文件中并使用FileSpout。它可以在Apache Storm集群上以分布式模式运行,但由于您只处理一个站点,因此可伸缩性不是问题,您可以在本地模式下运行它。
或者Apache Nutch也可以是一个选项,但你可能会发现StormCrawler使用起来更简单,更容易定制。