楼主: fenglx46801028
1810 2

[问答] [已解决!!!]R抓取深交所数据时的乱码问题 [推广有奖]

  • 0关注
  • 2粉丝

已卖:65份资源

硕士生

41%

还不是VIP/贵宾

-

威望
0
论坛币
219 个
通用积分
6.5976
学术水平
6 点
热心指数
6 点
信用等级
3 点
经验
1310 点
帖子
107
精华
0
在线时间
181 小时
注册时间
2013-2-22
最后登录
2021-11-23

楼主
fenglx46801028 发表于 2016-6-22 01:57:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
此问题已经解决!
R抓取深交所的信息披露考评数据的时候,网页编码是GBK的时候,解析正常;当页面的编码是GB2312时,比如2008年的主板数据,解析后的数据往往是乱码的,请问乱码问题有好的解决方法吗?
以下是相应代码,对于编码是GB2312的页面,将“GBK”换成“GB2312”,无用。

另附2001年-2015年
的(主板)信息考评数据。
main.rar (19.04 KB, 需要: 1 个论坛币) 本附件包括:
  • main.csv



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:深交所 已解决 信息披露考评 已经解决 解决方法 信息

深交所信息披露考评(08-14主板 中小板).rar
下载链接: https://bbs.pinggu.org/a-2054752.html

13.8 KB

本附件包括:

  • main.csv
  • sme.csv

沙发
ryoeng(未真实交易用户) 在职认证  发表于 2016-6-25 12:02:42
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

藤椅
fenglx46801028(未真实交易用户) 发表于 2016-7-1 21:05:06
ryoeng 发表于 2016-6-25 12:02
独乐乐不如众乐乐,何不分享解决方案呢?
请多指教!
  1. # RStudio 编码UTF-8
  2. # 抓取深交所信息披露考评数据(主板)
  3. library(XML)
  4. library(RCurl)

  5. # 主板
  6. main <- data.frame()
  7. # 第1页,获取总页数
  8. url <- "http://www.szse.cn/main/disclosure/jgxxgk/xxplkp/"
  9. result <- getURI(url, .encoding = "GBK")
  10. pageNum <- regmatches(result, regexpr("共[0-9]+页", result)) # 共xxx页
  11. pageNum <- as.integer(substr(pageNum, 2, nchar(pageNum) - 1))
  12. cat("总页数:", pageNum, "\n")
  13. # 抓取数据
  14. for(page in 1:pageNum){ # 获取全部数据
  15.         cat(page, "\n")
  16.         url <- paste("http://www.szse.cn/szseWeb/FrontController.szse?randnum=0.800747026658066&ACTIONID=7&AJAX=AJAX-TRUE&CATALOGID=1759_plkp&TABKEY=tab1&tab1PAGENUM=",
  17.                      page,
  18.                      "&tab1PAGECOUNT=",
  19.                      pageNum,
  20.                      "&tab1RECORDCOUNT=6890&REPORT_ACTION=navigate",
  21.                      sep = "")
  22.         result <- getURI(url, .encoding = "GBK")
  23.         result <- iconv(result, "GBK", "UTF-8") # 编码转换!!!
  24.         record <- ParseHTMLToTable(result)
  25.         main <- rbind(main, record)
  26. }
  27. # 写入文件
  28. write.csv(main, file = "./data/main.csv", quote = F, row.names = F)


  29. # 解析HTML
  30. ParseHTMLToTable <- function(result){
  31.         # 转为html页面
  32.         html <- htmlParse(result, asText = T, encoding="UTF-8")
  33.         # 提取table
  34.         url.list <- xpathSApply(html, "//td[@class='cls-data-td']", xmlValue)
  35.         # 4个为1条记录
  36.         group <- length(url.list) / 4
  37.         # 如果不是4的倍数,则抓取或解析有误
  38.         if(floor(group) - group < 0){
  39.                 stop("[ParseHTMLToTable]记录非整数!\n")
  40.         }
  41.         # 构建数据框
  42.         temp <- data.frame(Stkcd = character(group), # 公司代码
  43.                            Name = character(group),  # 公司简称
  44.                            Grade = character(group), # 考评结果
  45.                            Year = character(group),  # 考评年度
  46.                            stringsAsFactors = F)
  47.         for(i in 1:group){
  48.                 for(j in 1:4){
  49.                         temp[i, j] <- iconv(url.list[(i - 1) * 4 + j], "UTF-8", "GBK")
  50.                 }
  51.         }
  52.         return(temp)
  53. }
复制代码



已有 1 人评分学术水平 热心指数 收起 理由
ryoeng + 1 + 1 对论坛有贡献

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 17:58