@Override
  public Links visitAndGetNextLinks(Page page) {
    Document doc = page.getDoc();

    String html = page.getHtml();
    String title = doc.title();
    System.out.println("URL:" + page.getUrl() + "  关键字:" + getKeyword() + "  标题:" + title);
    Map<String, String> map = new HashMap<String, String>();
    map.put("url", page.getUrl());
    if (isExistKeywords(html)) {
      save(map);
    }

    /* 下面是2.0版本新加入的内容 */
    /*
     * 抽取page中的链接返回,这些链接会在下一轮爬取时被爬取。 不用担心URL去重,爬虫会自动过滤重复URL。
     */
    Links nextLinks = new Links();

    /*
     * 我们只希望抽取满足正则约束的URL, Links.addAllFromDocument为我们提供了相应的功能
     */
    nextLinks.addAllFromDocument(doc, regexRule);

    /*
     * Links类继承ArrayList<String>,可以使用add、addAll等方法自己添加URL
     * 如果当前页面的链接中,没有需要爬取的,可以return null
     * 例如如果你的爬取任务只是爬取seed列表中的所有链接,这种情况应该return null
     */
    return nextLinks;
  }
Esempio n. 2
0
  @Override
  public Links visitAndGetNextLinks(Page page) {
    System.out.println(page.getHtml());
    if (Pattern.matches(".*jpg$", page.getUrl())
        || Pattern.matches(".*png$", page.getUrl())
        || Pattern.matches(".*gif$", page.getUrl())) {
      try {
        FileUtils.writeFileWithParent(
            "download/" + id.incrementAndGet() + ".jpg", page.getContent());
        System.out.println("download:" + page.getUrl());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    MyLinks nextLinks = new MyLinks();
    RegexRule rr = new RegexRule();
    rr.addRule(".*meishij.*");
    nextLinks.addAllFromDocument(page.getDoc(), rr);
    nextLinks.filterImgUrl(page.getDoc(), rr);

    System.out.println(nextLinks.size());
    try {
      Thread.sleep(1500);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    return nextLinks;
  }
 @Override
 public Links visitAndGetNextLinks(Page page) {
   String jsonStr = page.getHtml();
   System.out.println(jsonStr);
   JSONObject json = new JSONObject(jsonStr);
   this.total = json.getInt("total");
   String html = json.getString("html");
   parseHtml(html);
   return null;
 }
 @Override
 public Links visitAndGetNextLinks(Page page) {
   weiboEntityBeans.addAll(WeiboEntityParser.parse(page.getHtml()));
   System.out.println();
   return null;
 }