tony8310的个人博客分享 http://blog.sciencenet.cn/u/tony8310

博文

ChatGPT修改代码,好用

已有 1421 次阅读 2023-7-15 09:36 |系统分类:科研笔记

Prompt:

将以下代码修改为并行处理代码  for (i in 0:900){ url <-   paste0(     '###### =',     i   ) resp <-   GET(url = url,       add_headers(.headers = myheaders),       encode = "raw") pg <- read_html(resp) #不会出现乱码 tables <- html_table(pg) #提取表格 tab <- html_table(pg, fill = TRUE)[[3]] %>%  as.data.frame() %>%   rename_all(~c('No','#','#',#','#','#')) %>%   slice(-1) #第一行作为列名 # 提取所有超链接 links <-read_html(url) %>%   html_nodes("a") %>%   html_attr("href") # 打印超链接 print(links) #提取站点编码 code <-  strapplyc(links, "[0-9-]{10,}", simplify = TRUE) # 取list的前10个字符 code <- unlist(lapply(code, function(x) substr(x, 1, 10))) tab$code <- code tab <-  rbind.fill(tab) }

ChatGPT的回复如下:比较规范,可以运行

library(foreach)
library(doParallel)

# 设置并行处理的核心数
num_cores <- detectCores()
registerDoParallel(cores = num_cores)

# 创建一个空的数据框用于存储结果
result_df <- data.frame()

# 并行处理循环
foreach(i = 0:900, .packages = c("httr", "rvest", "stringr")) %dopar% {
  url <- paste0('#######E=', i)
  resp <- GET(url = url, add_headers(.headers = myheaders), encode = "raw")
  pg <- read_html(resp)

  # 提取表格
  tab <- html_table(pg, fill = TRUE)[[3]] %>%
    as.data.frame() %>%
    rename_all(~c('No','##','##','##','##','###')) %>%
    slice(-1)

  # 提取所有超链接
  links <- read_html(url) %>%
    html_nodes("a") %>%
    html_attr("href")

  # 提取站点编码
  code <- strapplyc(links, "[0-9-]{10,}", simplify = TRUE)
  code <- unlist(lapply(code, function(x) substr(x, 1, 10)))

  # 添加站点编码列
  tab$code <- code

  # 将结果添加到结果数据框中
  result_df <<- rbind.fill(result_df, tab)
}

# 停止并行处理
stopImplicitCluster()

# 输出结果数据框
print(result_df)



https://wap.sciencenet.cn/blog-331295-1395421.html

上一篇:chatGPT 免费轻度使用
下一篇:使用tryCatch函数来捕获并处理异常
收藏 IP: 111.30.247.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-28 01:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部