- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 219 个
- 通用积分
- 6.5976
- 学术水平
- 6 点
- 热心指数
- 6 点
- 信用等级
- 3 点
- 经验
- 1310 点
- 帖子
- 107
- 精华
- 0
- 在线时间
- 181 小时
- 注册时间
- 2013-2-22
- 最后登录
- 2021-11-23
|
ryoeng 发表于 2016-6-25 12:02 
独乐乐不如众乐乐,何不分享解决方案呢? 请多指教!
- # RStudio 编码UTF-8
- # 抓取深交所信息披露考评数据(主板)
- library(XML)
- library(RCurl)
- # 主板
- main <- data.frame()
- # 第1页,获取总页数
- url <- "http://www.szse.cn/main/disclosure/jgxxgk/xxplkp/"
- result <- getURI(url, .encoding = "GBK")
- pageNum <- regmatches(result, regexpr("共[0-9]+页", result)) # 共xxx页
- pageNum <- as.integer(substr(pageNum, 2, nchar(pageNum) - 1))
- cat("总页数:", pageNum, "\n")
- # 抓取数据
- for(page in 1:pageNum){ # 获取全部数据
- cat(page, "\n")
- url <- paste("http://www.szse.cn/szseWeb/FrontController.szse?randnum=0.800747026658066&ACTIONID=7&AJAX=AJAX-TRUE&CATALOGID=1759_plkp&TABKEY=tab1&tab1PAGENUM=",
- page,
- "&tab1PAGECOUNT=",
- pageNum,
- "&tab1RECORDCOUNT=6890&REPORT_ACTION=navigate",
- sep = "")
- result <- getURI(url, .encoding = "GBK")
- result <- iconv(result, "GBK", "UTF-8") # 编码转换!!!
- record <- ParseHTMLToTable(result)
- main <- rbind(main, record)
- }
- # 写入文件
- write.csv(main, file = "./data/main.csv", quote = F, row.names = F)
- # 解析HTML
- ParseHTMLToTable <- function(result){
- # 转为html页面
- html <- htmlParse(result, asText = T, encoding="UTF-8")
- # 提取table
- url.list <- xpathSApply(html, "//td[@class='cls-data-td']", xmlValue)
- # 4个为1条记录
- group <- length(url.list) / 4
- # 如果不是4的倍数,则抓取或解析有误
- if(floor(group) - group < 0){
- stop("[ParseHTMLToTable]记录非整数!\n")
- }
- # 构建数据框
- temp <- data.frame(Stkcd = character(group), # 公司代码
- Name = character(group), # 公司简称
- Grade = character(group), # 考评结果
- Year = character(group), # 考评年度
- stringsAsFactors = F)
- for(i in 1:group){
- for(j in 1:4){
- temp[i, j] <- iconv(url.list[(i - 1) * 4 + j], "UTF-8", "GBK")
- }
- }
- return(temp)
- }
复制代码
|
-
总评分: 学术水平 + 1
热心指数 + 1
查看全部评分
|