簡體   English   中英

HTML內容的文件壓縮和存儲

[英]File compression for and storing of HTML content

對於通過R檢索的HTML內容,我想知道關於這兩個方面我有哪些(其他)選項

  1. 將內容保存到磁盤時的文件壓縮(最大壓縮率/最小文件大小;壓縮所需的時間是次要的)

  2. 最有效地存儲內容(通過任何方式,OS文件系統或DBMS)

我目前的發現是gzfile在R中提供了最佳的壓縮率。我能做得更好嗎? 例如,我嘗試在保存之前消除HTML代碼中不必要的空間,但是gzfile似乎已經解決了這一問題,因為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_2 <- gsub(">\\s*<", "", html)

去除><

而是嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM