如何解析380K html页面(性能方面的最佳方式)?

时间:2017-07-03 08:29:01

标签: html r performance xml-parsing html-parsing

我有什么:

  • 380,000个html页面(2010年至2017年新闻门户网站上的文章)。
  • 总共65.19Gb(68,360,000Kb)。
  • 每页170Kb(平均)。
  • 服务器1:2.7GHz i5,16Gb Ram,SSD,macOS 10.12,R版本3.4.0(我的笔记本电脑)。
  • 服务器2:3.5GHz Xeon E-1240 v5,32Gb,SSD,Windows Server 2012,R 版本3.4.0。

我需要什么:

  • 我需要解析这些html页面并获取如下数据: ArticleDate | ArticleSection | ArcticleTitle | ArticleAuthor | ArticleContent | ...... |

我该怎么做:

require(rvest)
files <- list.files(file.path(getwd(), "data"), full.names = TRUE, recursive = TRUE, pattern = "index")
downloadedLinks <- c()
for (i in 1:length(files)) {
  currentFile <- files[i]
  pg <- read_html(currentFile, encoding = "UTF-8")
  fileLink <- html_nodes(pg, xpath=".//link[@rel='canonical']") %>% html_attr("href")   
  downloadedLinks <- c(downloadedLinks, fileLink)  
}

我在40,000页上运行此代码并获得此结果:

  • 服务器1:800secs
  • 服务器2:1000secs

这意味着在服务器1上处理380,000页需要7600秒或 126分钟,在服务器2上处理 9500秒或158分钟

因此,我几乎没有问题,希望社区能帮助我。我很乐意听到任何想法,建议或批评。

  1. 如何改进上面的代码以减少处理时间?
  2. 为什么服务器2(我的意思是真实服务器)与服务器1(我的笔记本电脑)相比显示出低性能?
  3. 有没有办法命令服务器2使用更多的CPU和RAM(Rgui.exe进程的CPU占用率约为10%,RAM为300Mb)

0 个答案:

没有答案