我正在修改[crawler4j] [1]中给出的代码。我想在抓取网站时找到特定的链接。对于前我在www.cmu.edu爬行,我正在尝试获取目录搜索的链接。这是我的代码 -
public void visit(Page page) {
String url = page.getWebURL().getURL();
// System.out.println("URL: " + url);
if (page.getParseData() instanceof HtmlParseData) {
HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();
String text = htmlParseData.getText();
String html = htmlParseData.getHtml();
System.out.println(html.matches(".*<a href.*."));
if (html.matches(".*.<a href=.*.>Directory Search</a>.*."))
System.out.println("***********Hello*********************");
// System.out.println("----------"+html);
return;
// List<WebURL> links = htmlParseData.getOutgoingUrls();
}
}
此代码不起作用。我没有在我的控制台上获得 ******* Helo ********* 。只是为了检查我在控制台中打印了html字符串,我复制了包含目录sreach的锚标记,并且我写了这个简单的两行代码 -
String test2="<li class=\"first\"><a href=\"http://directory.andrew.cmu.edu/\" title=\"Carnegie Mellon University Faculty, Staff and Student Directory\">Directory Search</a></li>";
System.out.println("*******"+test2.matches(".*.<a href=.*.>Directory Search</a>.*."));
这很有效。从控制台复制String test2的值。我在代码的第一部分做错了什么?
答案 0 :(得分:0)
尝试此操作(您必须使用(?s)
来匹配新行字符)
String test2="qwert\n\n<li class=\"first\"><a href=\"http://directory.andrew.cmu.edu/\" title=\"Carnegie Mellon University Faculty, Staff and Student Directory\">Directory Search</a></li>";
System.out.println("*******"+test2.matches("(?s).*.<a href=.*.>Directory Search</a>.*."));