【问题标题】:File compression for and storing of HTML contentHTML 内容的文件压缩和存储
【发布时间】:2014-05-14 12:58:32
【问题描述】:

对于通过 R 检索的 HTML 内容,我想知道我有哪些(其他)选项

  1. 将内容保存到磁盘时的文件压缩(最大压缩率/最小文件大小;压缩时间是次要的)

  2. 最有效地存储内容(通过任何方式,操作系统文件系统或 DBMS)

我目前的发现是gzfile 在 R 中提供了最好的压缩率。我可以做得更好吗?例如,我尝试在保存之前删除 HTML 代码中不必要的空间,但似乎gzfile 已经处理了这一点,因为相比之下我不会得到更小的文件大小。

扩展好奇心问题:

搜索引擎如何处理这个问题?或者他们是否在代码被编入索引后就将其丢弃,因此这样的事情与他们无关?


插图

获取示例 HTML 代码:

url_current <- "http://cran.at.r-project.org/web/packages/available_packages_by_name.html"
html <- readLines(url(url_current))

保存到磁盘:

path_txt        <- file.path(tempdir(), "test.txt")
path_gz         <- gsub("\\.txt$", ".gz", path_txt)
path_rdata      <- gsub("\\.txt$", ".rdata", path_txt)
path_rdata_2    <- gsub("\\.txt$", "_raw.rdata", path_txt)

write(html, file=path_txt)
write(html, file=gzfile(path_gz, "w"))
save(html, file=path_rdata)

html_raw <- charToRaw(paste(html, collapse="\n"))
save(html_raw, file=path_rdata_2)

尝试删除不必要的空格:

html_2  <- gsub("(>)\\s*(<)", "\\1\\2",html)
path_gz_2   <- gsub("\\.txt$", "_2.gz", path_txt)
write(html_2, gzfile(path_gz_2, "w"))
html_2  <- gsub("\\n", "", html_2)
path_gz_3   <- gsub("\\.txt$", "_3.gz", path_txt)
write(html_2, gzfile(path_gz_3, "w"))

生成的文件大小:

files   <- list.files(dirname(path_txt), full.names=TRUE)
fsizes  <- file.info(files)$size
names(fsizes) <- sapply(files, basename)

> fsizes
       test.gz     test.rdata       test.txt      test_2.gz      test_3.gz 
        164529         183818         849647         164529         164529 
test_raw.rdata 
        164608 

检查处理后的 HTML 代码的有效性:

require("XML")
html_parsed <- htmlParse(html)

> xpathSApply(html_parsed, "//a[. = 'devtools']", xmlAttrs)
                                    href 
"../../web/packages/devtools/index.html" 
## >> Valid HTML

html_2_parsed <- htmlParse(readLines(gzfile(path_gz_2)))

> xpathSApply(html_2_parsed, "//a[. = 'devtools']", xmlAttrs)
                                    href 
"../../web/packages/devtools/index.html" 
## >> Valid HTML

html_3_parsed <- htmlParse(readLines(gzfile(path_gz_3)))

> xpathSApply(html_3_parsed, "//a[. = 'devtools']", xmlAttrs)
                                    href 
"../../web/packages/devtools/index.html" 
## >> Valid HTML

【问题讨论】:

    标签: html r compression gzip


    【解决方案1】:
    html_2 <- gsub(">\\s*<", "", html)
    

    去掉&gt;和&lt;

    改为尝试:

    html_2 <- gsub("(>)\\s*(<)", "\\1\\2",html)
    

    【讨论】:

    • 应该是 2 个反斜杠 html_2 )\\s*(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多