张兵
ChatGPT修改代码,好用
2023-7-15 09:36
阅读:1920

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?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?