有一个网站使用了我正在尝试使用httrack或wget镜像的strapdown.js,但我没说,因为该网站包含markdown而不是HTML。只有捷联才能将链接转换为HTML链接。因此,客户端需要首先解释Javascript,然后在生成的dom中搜索链接。
市场上是否有能够做到这一点的工具?
我试过了
wget -erobots=off --no-parent --wait=3 --limit-rate=20K -r -p -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -A htm,html,css,js,json,gif,jpeg,jpg,bmp http://my.si.te
和
httrack -w -v --extended-parsing=N -n -t -r -p -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --robots=0 http://my.si.te "+*" "-r6"
非常感谢任何帮助。
答案 0 :(得分:0)
如果您习惯使用Java编写客户端,我使用了HTMLUnit。
使用Javascript获取页面的精简示例如下所示。它改编自我用来刮取我管理的其中一个网站的实际脚本。我以strapdownjs.com为例。如果你运行它,你必须忽略css警告,但是你会发现它找到并输出了链接到bootswatch.com,这是由javascript从页面源中的markdown生成的。您可能更喜欢the tool's own Getting started page。
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;
public class WebGetter
{
// Set up the client (i.e. gui-less browser)
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException
{
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
webClient.setThrowExceptionOnScriptError(false);
webClient.setJavaScriptEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.setJavaScriptTimeout(20000);
webClient.waitForBackgroundJavaScript(20000);
// Get the page you want (store as HTMLUnit object HtmlPage)
String url = "http://strapdownjs.com/";
HtmlPage page = webClient.getPage(url);
// Use some of the HTMLUnit functionality to look at the DOM (e.g. here,
// find all links)
List<HtmlAnchor> allLinks = page.getAnchors();
for (HtmlAnchor a : allLinks)
{
System.out.println(a.asText());
}
}
}