首页 > 解决方案 > 当 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

标签: rweb-scraping

解决方案


推荐阅读