@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; }
@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; }