如何在硬盘中自动保存搜索到的网页,以便在离线状态下进行分析?

时间:2016-10-19 14:34:56

标签: javascript java regex web web-crawler

我有一项任务,我必须在特定网页内搜索,搜索后,将显示结果页面,必须保存它们以便在离线进行进一步分析。我有很多单词可以搜索特定的网页。

我想开发这样一个程序,它会自动在站点中发送搜索请求,结果页面将保存在文件夹中,以便在离线状态下进行进一步分析,就像通过正则表达式进行分析一样。我只懂Java,J2EE并且熟悉JavaScript。

我在互联网上看过一些软件,但到目前为止,它们与我的要求不符,而且它们不是免费的。但是不要忘记通过试用推荐这样的免费软件或软件。

2 个答案:

答案 0 :(得分:0)

您应该将Web响应保存在变量中,然后将其写入某个目录中的.txt文件。

然后,您可以与您的.txt一起离线定期进行展示。

来自Apache的HttpComponents-client库很适合这样做。

有一些获取请求的示例:

    public String httpGetSimple(String url){
    String source = null;

    HttpClient httpClient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet(url);
    try {
    HttpResponse httpResponse = httpClient.execute(httpGet);
        source = EntityUtils.toString(httpResponse.getEntity());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return source;
}

答案 1 :(得分:0)

如果您尝试在浏览器中使用JavaScript执行此操作,那么现在脚本无法以您所谈论的方式访问本机文件系统来编写文件。有一些使用Java的解决方法,在这里提到:Can javascript access a filesystem?

如果您只是想使用JavaScript来执行它,并且它可以在浏览器之外运行,例如在命令行或服务器上运行,您可以使用Node轻松地执行此操作。



 var http = require('http');
 var fs = require('fs');

 http.get('http://www.google.com/index.html', (res) => {
   console.log(`Got response: ${res.statusCode}`);
   //read in the response data
   var body = "";
   res.on("data", function(chunk) {
     body += chunk;
   });
   //write the body of the file to a text file
   fs.writeSync('page.txt', body);
   res.resume();
 }).on('error', (e) => {
   console.log(`Got error: ${e.message}`);
 });