r - 当 html 节点没有 href/url 时,从嵌入式链接中抓取网页
问题描述
我正在尝试使用 R 从 goodreads 的书籍列表中抓取书籍数据。我已成功抓取列表页面上可见的数据,但我想提取仅在嵌入式链接中找到的数据。例如,该列表不包括该书的首次出版日期,但该信息可在书页上找到,可通过单击书名访问该页面。
这是我的工作代码:
library(rvest)
library(tidyverse)
link = "https://www.goodreads.com/list/show/110332.Best_300_Some_Odd_Pages"
page = read_html(link)
name <- page %>%
html_nodes(".bookTitle span") %>%
html_text
author <- page %>%
html_nodes(".authorName span") %>%
html_text
rating_string <- page %>%
html_nodes(".minirating") %>%
html_text
从这里,我可以直接将其放入数据框中。
我正在关注一个在线 youtube 教程,该教程说我需要使用这样的东西作为从嵌入式链接中提取信息的第一步:
book_links <- page %>%
html_nodes(".bookTitle span") %>%
html_attr("href") %>%
paste("goodreads url",.)
显然“ goodreads url ”被替换为真实的url。youtuber 使用的示例是 imdb top 250。
当我运行 justpage %>% html_nodes(".bookTitle span")
时,它不会返回 href 或 url:
> page %>%
+ html_nodes(".bookTitle span")
{xml_nodeset (100)}
[1] <span itemprop="name" role="heading" aria-level="4">Don't Close Your Eyes</span>
[2] <span itemprop="name" role="heading" aria-level="4">To Kill a Mockingbird</span>
有没有办法在这里进行?我不确定列表网址的格式是否为“https://www.goodreads.com/list/show/...”,而书页的格式为“https://www.goodreads” .com/book/show/..." 有所作为,或者意味着使用 youtube 教程中的方法无法做到这一点。
教程视频是这样的:https ://www.youtube.com/watch?v=E3pFBp5oPU8&ab_channel=dataslice
解决方案
推荐阅读
- exception - Camel Spring DSL onException 根本不会触发
- html - 如何使用 flexbox 仅在移动设备上堆叠两个元素
- java - 在 Spock 测试中使用 @Client 在 Micronaut 中进行 HTTP 多部分文件上传
- sql - 使用滞后函数按行检索数据
- android - 如何使用 q python 访问 android 中的电话号码?
- c# - DbContext 实例与 Scope 实例
- angular - Angular 2 - 在没有配置 useHash 的生产模式下刷新页面 404
- git - 如果更改日志未更新,git hook 会发出警告?
- php - laravel 5.6:我收到错误“语法错误或访问冲突:1064 您的 SQL 中有错误”
- ejabberd - 如何修复对 ejabber 服务器的连接请求调用过多?