我想获取页面的内容并提取其中的特定部分。据我所知,此类任务至少有两种解决方案:Crawler4j和Jsoup。
他们都能够检索页面的内容并提取它的子部分。我唯一不确定的是,它们之间有什么区别?有一个similar question,标记为已回答:
Crawler4j是一个爬虫,Jsoup是一个解析器。
但我刚刚检查过,除了解析功能外,Jsoup还能够抓取页面,而Crawler4j不仅可以抓取页面而且还可以解析其内容。
因此,请您澄清Crawler4j和Jsoup之间的区别吗?
答案 0 :(得分:24)
抓取比仅检索单个URI的内容更重要。如果您只想检索某些页面的内容,那么使用Crawler4J
之类的内容并没有什么好处。
让我们来看一个例子。假设您要抓取网站。要求是:
About
页面有Home
页面的链接,但我们已经获得了Home
页面的内容所以不要再访问它了。 Home
页面开始检索50个URI。 这是一个简单的场景。尝试使用Jsoup
解决此问题。所有这些功能必须由您实施。对于这个问题,Crawler4J或任何爬虫微框架将会或者应该具有上述操作的实现。当你决定如何处理内容时,Jsoup
的强大品质就会大放异彩。
让我们来看看解析的一些要求。
HTML
规范的标记)这是Jsoup
发挥作用的地方。当然,这里有一些重叠。 Crawler4J
或Jsoup
可能会有些内容,但这并不能使它们等效。您可以删除从Jsoup
检索内容的机制,仍然是一个很棒的工具。如果Crawler4J
将删除检索,那么它将失去一半的功能。
我在现实生活场景中的同一个项目中使用了它们。
我抓住了一个网站,利用Crawler4J
的优点,解决了第一个例子中提到的所有问题。然后我将检索到的每个页面的内容传递给Jsoup
,以便提取我需要的信息。我可以没用过其中一个吗?是的,我可以,但我必须实现所有缺少的功能。
因此差异,Crawler4J
是一个爬虫,有一些简单的解析操作(你可以在一行中提取图像),但没有复杂CSS
查询的实现。 Jsoup
是一个解析器,可为HTTP
个请求提供简单的API。对于任何更复杂的事情都没有实现。