提问人:42Cosmic 提问时间:10/27/2020 更新时间:10/27/2020 访问量:193
R:URL 上的 readLines 导致缺少行
R: readLines on a URL leads to missing lines
问:
当我在 URL 上时,我得到缺失的行或值。这可能是由于计算机无法读取的间距所致。readLines()
当您使用上述网址时,CTR + F 会找到 38 个与“TV-”匹配的文本实例。另一方面,当我跑步时,我只找到 12 个。readLines()
grep("TV-", HTML)
那么,如何避免编码/间距错误,以便获得完整的 HTML 行?
答:
0赞
Ronak Shah
10/27/2020
#1
您可以使用来抓取数据。例如,要获取所有标题,您可以执行以下操作:rvest
library(rvest)
url <- 'https://www.imdb.com/search/title/?locations=Vancouver,%20British%20Columbia,%20Canada&start=1.json'
url %>%
read_html() %>%
html_nodes('div.lister-item-content h3 a') %>%
html_text() -> all_titles
all_titles
# [1] "The Haunting of Bly Manor" "The Haunting of Hill House"
# [3] "Supernatural" "Helstrom"
# [5] "The 100" "Lucifer"
# [7] "Criminal Minds" "Fear the Walking Dead"
# [9] "A Babysitter's Guide to Monster Hunting" "The Stand"
#...
#...
评论
0赞
42Cosmic
10/27/2020
谢谢。这适用于获取所有标题。我需要再次运行 html_nodes() 并附加一个包含“TV-”或 CSS 选择器内的任何内容的新列。最后,我只过滤掉不包含“TV-”的行。后续问题:为什么html_nodes('span.certificate')偶尔会显示与网页上显示的内容不同的内容?例如,网页显示“TV-14”,但 html_nodes() 将输出“14+”。
0赞
Ronak Shah
10/27/2020
这很奇怪。我不确定为什么会这样。你曾经从中提取文本吗?html_text()
0赞
42Cosmic
10/27/2020
是的,我也用了html_text()。向上移动代码,html_nodes() 也有不同的值。与 Chrome 的“查看页面源代码”中的原始 HTML 代码交叉引用,它们是不同的。例如,电视节目:超自然是 TV-14。但是,read_html() 将其视为“PG”。这是编码问题吗?这些是完全不同的电影认证。
评论