R:URL 上的 readLines 导致缺少行

R: readLines on a URL leads to missing lines

提问人:42Cosmic 提问时间:10/27/2020 更新时间:10/27/2020 访问量:193

问:

当我在 URL 上时,我得到缺失的行或值。这可能是由于计算机无法读取的间距所致。readLines()

当您使用上述网址时,CTR + F 会找到 38 个与“TV-”匹配的文本实例。另一方面,当我跑步时,我只找到 12 个。readLines()grep("TV-", HTML)

那么,如何避免编码/间距错误,以便获得完整的 HTML 行?

R Web HTML 解析

评论

1赞 Ronak Shah 10/27/2020
您想从页面中提取哪些信息。顺便说一句,您共享的链接我使用 CTR + F 在该页面上找不到任何“TV-”实例。
0赞 42Cosmic 10/27/2020
@RonakShah 谢谢。我正在尝试提取在加拿大温哥华拍摄的电视节目的所有标题。IMDB链接应该有几个“TV-”字符串,如TV-MA、TV-14等。我有部分工作代码可以做到这一点。首先,我索引“TV-”的位置。然后取上面 4 行的标题。不幸的是,readLines() 跳过了一些行或将值留空,因为它不知道它在读什么。

答:

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”。这是编码问题吗?这些是完全不同的电影认证。