是否能够通过Crawler4j检索网站内容?

时间:2016-09-11 20:44:01

标签: java parsing web-crawler jsoup crawler4j

我是Java的新手。

现在,我想使用Google新闻搜索检索新闻文章内容-keyword:" toy"从第1页到第10页。

https://www.google.com/search?q=toy&biw=1366&bih=645&tbm=nws&source=lnms&sa=X&ved=0ahUKEwiTp82syoXPAhUMkpQKHawZBOoQ_AUICygE

这是从第1页 - 第10页检索100个新闻内容。(假设每页有10篇新闻文章)

读完之后 Crawler4j vs. Jsoup for the pages crawling and parsing in Java

我决定尽可能使用Crawler4j

  
    

提供基本URI(主页)

         

从每个页面获取所有URI并检索其中的内容     太。

         

为您检索的每个URI递归移动。

         

仅检索此网站内的URI的内容(那里     可能     外部URI引用另一个网站,我们不需要那些)。

  

在我的情况下,我可以将谷歌搜索页面从p1发送到p10。如果我设置intnumberOfCrawlers=1

,它会返回100条新闻文章

然而,当我尝试Crawler4j的快速启动时example

它只返回从原始链接中找到的外部链接。 像这样:

    URL: http://www.ics.uci.edu/~lopes/
Text length: 2619
Html length: 11656
Number of outgoing links: 38
URL: http://www.ics.uci.edu/~welling/
Text length: 4503
Html length: 23713
Number of outgoing links: 24
URL: http://www.ics.uci.edu/~welling/teaching/courses.html
Text length: 2222
Html length: 15138
Number of outgoing links: 33
URL: http://www.ics.uci.edu/
Text length: 3661
Html length: 51628
Number of outgoing links: 86

因此,我想我可以crawler4j执行我提出的功能。或者我应该一起使用crawler4j + JSoup吗?

2 个答案:

答案 0 :(得分:4)

crawler4j尊重履带式政治,例如robots.txt。在您的情况下,此文件是以下one

检查此文件显示,不允许抓取您给定的种子点:

 Disallow: /search

因此,除非您修改classes以忽略robots.txt,否则您将无法抓取指定的网站。但是,这不被认为是礼貌的,并且不符合爬虫道德规范。

答案 1 :(得分:0)

您的帖子中有很多问题我会尽力回答:

“是否可以通过Crawler4j检索网站内容?”

  1. 是的,可以通过github源代码
  2. 上的示例来证明
  3. 但是对于更高级的DOM解析/操作,我将鼓励您添加Jsoup。以下是Jsoup
  4. 的文档

    “因此,我想知道crawler4j可以执行我提出的功能。或者我应该使用crawler4j + JSouptogether吗?”

    1. 使用Crawler4j获取最多的内容,Crawling
    2. 使用Jsoup通过方便的API提取和操作数据
    3. “它只返回从原始链接中找到的外部链接。就像这些”

      • BasicCrawler中,您需要在此处添加允许网址return href.startsWith("http://www.ics.uci.edu/");修改以包含更多
      • BasicCrawlController中,您需要在config.setMaxDepthOfCrawling(2);
      • 添加页面种子