【问题标题】:Web page not found in web scraping, how can I find it in R?在网页抓取中找不到网页,我如何在 R 中找到它?
【发布时间】:2021-10-11 04:00:11
【问题描述】:

我已经使用 R 大约一年了,我很喜欢它。我最近进入了文本挖掘领域,遇到了一些困难。我正在尝试使用来自网站的信息创建一个数据框。我一直在抓取数据并且能够成功创建两个变量。在尝试创建第三个变量时它不起作用。当我查看我制作的表格时,该变量的内容显示“抱歉,找不到网页”。但是,我知道它在那里!有什么想法吗?谢谢大家!

link = "https://www.fmprc.gov.cn/mfa_eng/wjdt_665385/zyjh_665391/"
page = read_html(link)
title = page %>% html_nodes(".newsLst_mod a") %>% html_text()
slinks = page %>% html_nodes(".newsLst_mod a") %>%
  html_attr("href") %>% paste("https://www.fmprc.gov.cn", ., sep = "")
date = page %>% html_nodes(".newsLst_mod span") %>% html_text()

这里是我遇到麻烦的地方...我在使用 Selector Gadget 时得到“p”并将其放在 html_ 节点函数中...但是,这似乎不起作用,我要空出来.如果我在页面上稍微调整一下抓取,当我查看它时,它可能在桌面上什么都没有。

get_s = function(slinks) {
  speeches_link = read_html(slinks)
  speech_words = speeches_link %>% html_nodes("p") %>%
    html_text() %>% paste(collapse = ",")
  return(speech_words)
}

What the table looks like

words = sapply(slinks, FUN = get_s)
speeches = data.frame(title, date, words, stringsAsFactors = FALSE)

【问题讨论】:

    标签: r web-scraping


    【解决方案1】:

    您需要在每个 URL 中粘贴的链接是 https://www.fmprc.gov.cn/mfa_eng/wjdt_665385/zyjh_665391

    试试下面的 -

    library(rvest)
    
    slinks = page %>% html_nodes(".newsLst_mod a") %>%
      html_attr("href") %>% trimws(whitespace = '\\.')  %>% 
      paste0("https://www.fmprc.gov.cn/mfa_eng/wjdt_665385/zyjh_665391", .)
    
    get_s = function(slinks) {
      speeches_link = read_html(slinks)
      speech_words = speeches_link %>% html_nodes("p") %>%
        html_text() %>% paste(collapse = ",")
      return(speech_words)
    }
    
    words = sapply(slinks, FUN = get_s)
    words
    

    【讨论】:

    • 你好!非常感谢您的回复,很有帮助。但是,我在这里仍然遇到了一些麻烦。当我运行代码时,文本的头部出现在控制台中。但是,我试图将 40 篇演讲的文本放入我的数据框中。当我尝试使用所有三个变量创建数据框时,我遇到了错误。该错误意味着我有不同的行数。有没有办法获取所有 40 篇演讲的文本?
    • > speeches = data.frame(title, date, words, stringsAsFactors = FALSE) data.frame(title, date, words, stringsAsFactors = FALSE) 错误:参数暗示不同的行数:40 , 6
    • 我正在测试这个函数,所以只使用了 6 个值和 head。我现在删除了它,你应该可以得到所有的文本。
    • 谢谢你罗纳克沙阿!我现在可以在控制台中看到所有 40 个演讲的文本。但是,当我运行peeches = data.frame(title, date, words, stringsAsFactors = FALSE) 我得到这个: as.data.frame.default(x[[i]], optional = TRUE) 中的错误:不能强制类' “功能”'到data.frame。有什么想法吗?
    • 我没有收到任何此类错误。
    猜你喜欢
    • 2020-05-29
    • 2018-06-27
    • 2011-08-15
    • 2020-08-22
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多