【问题标题】:looking to use javascript to save a webpage as a text file希望使用 javascript 将网页保存为文本文件
【发布时间】:2013-02-21 15:58:25
【问题描述】:

这是一个有很多文字的体育网站,我稍后会根据兴趣对文字进行排序。

我遇到的唯一代码是:

<html>
<body>
<script language="JScript">
<!--
function open()

{
    var result = string.Empty;
    using (var webClient = new System.Net.WebClient())

    result = webClient.DownloadString("http://some.url");



    var myObject, afile;
    myObject = new ActiveXObject("Scripting.FileSystemObject");
    afile = myObject.OpenTextFile("F:\\sports.txt", 8, true, 0);
    afile.write (result);
    afile.close();
}
-->
</script>
Open a text stream for the file sport.txt

<form name="myForm">
<input type="Button" value="Open File" onClick='open()'>
</form>
</body>
</html>

任何帮助将不胜感激,如果需要,我也可以用其他语言编写。 请指导我!

【问题讨论】:

  • 出于安全原因,您永远无法(可靠、跨浏览器)访问用户的文件系统。最好的办法是生成一个仅包含文本的单独页面并提供下载选项。
  • @Quentin - 不,不是
  • 我不认为 OP 要求在没有“另存为...”对话框的情况下保存它。
  • 这个例子有点误导,尤其是引用文件系统的那一行。如果他只想渲染一个文本文件,我们需要更多地了解他的后端。

标签: javascript jscript


【解决方案1】:

如果您想编写自己的实用程序脚本来获取页面内容并将其下载到文件中,并且您想用 JavaScript 编写它,您可以使用 Node。

http://nodejs.org/

如果您只需要一个命令行工具来执行此操作,请使用wget

这两个选项都可以在许多平台上运行。

【讨论】:

    【解决方案2】:

    您发布的代码什么都不做,因为它不是有效的 JS 代码。而且问题这么不清楚,答案可能不是你想要的。

    我不确定您真正要保存的内容是整个页面源还是浏览器呈现的可见文本。您也没有指定在哪个环境中运行您的脚本,是在 Web 浏览器中还是在 WSH 中?

    我将发布这两种情况的示例代码(页面源/文本)。我会尽我最大的努力用 JScript 编写其中的至少一个。但是,对我来说,用 VBScript 编写更容易,正如你所说,这不是问题,我的第二个示例代码将使用 VBS。

    获取html源代码(.JS):

    var url = 'http://some.url'; // set your page url here
    with (new ActiveXObject("Microsoft.XmlHttp")) {
        open('GET', url, false);
        send('');
        var data = responseText;
        with (new ActiveXObject("ADODB.Stream")) {
            Open();
            Type = 2; // adTypeText
            Charset = 'utf-8'; // specify correct encoding
            WriteText(data);
            SaveToFile("page.html", 2);
            Close();
        }
    }
    

    要获得可见/渲染文本 (.VBS):

    Dim url: url = "http://some.url" 'set your page url here'
    With WScript.CreateObject("InternetExplorer.Application", "IE_")
        .Visible = False
        .Navigate url
        Do
            WScript.Sleep 100
        Loop While .ReadyState < 4 And .Busy
        Dim data: data = .Document.Body.innerText
        With CreateObject("ADODB.Stream")
            .Open
            .Type     = 2 'adTypeText'
            .Position = 0
            .Charset  = "utf-8"
            .WriteText data
            .SaveToFile "output.txt", 2
            .Close
        End With
        .Quit
    End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多