使用rvest抓取Letterboxd影片链接失败的问题排查
解决rvest抓取Letterboxd影片URL的问题
问题原因
- 抓取所有
<a>标签会返回页面上所有链接,包括导航、页脚等无关内容,无法精准定位影片链接。 .frame.has-menu是容器元素(非<a>标签),本身不具备href属性,所以提取不到任何链接内容。
正确实现代码
通过浏览器开发者工具可定位到:列表中的影片链接嵌套在.list-film条目下的.film-poster容器内的<a>标签中。以下是可直接运行的代码:
library(rvest) # 目标列表URL list_url <- 'https://letterboxd.com/horrorville/list/horrorville-community-80s-video-store-horror/' page <- read_html(list_url) # 提取相对路径的影片链接 relative_links <- page %>% html_elements(".list-film .film-poster a") %>% html_attr("href") # 拼接为完整URL full_film_urls <- paste0("https://letterboxd.com", relative_links) # 查看结果 head(full_film_urls)
处理更多影片(滚动加载场景)
如果列表包含大量影片,页面会通过滚动触发AJAX加载更多内容,可采用以下两种方案:
- 使用
RSelenium模拟浏览器滚动到底部,加载全部内容后再抓取。 - 查看浏览器Network标签中的XHR请求,找到加载更多影片的GET接口,构造请求参数(如
page参数)批量获取所有影片链接。
关于请求类型的说明
你提到的POST请求问题不适用于此场景:该列表的初始影片内容是静态HTML渲染的,滚动加载的内容也通过GET请求获取,rvest完全可以处理这类请求,无需担心POST限制。
内容的提问来源于stack exchange,提问作者js4032
相关产品推荐
相关产品推荐

