试图镜像使用strapdown.js的网站

时间:2014-11-26 12:56:55

标签: javascript linux unix wget httrack

有一个网站使用了我正在尝试使用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"

非常感谢任何帮助。

1 个答案:

答案 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());
        }
    }
}