Rvest - 无法读取网站内容 - 不知道要访问哪些节点 select
Rvest - Can't read content of website - Don't know which nodes to select
描述
我正在抓取网页以检索相关数据。作为示例,我将使用此 URL:
例子
https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo
我的第一次迭代基本上是搜索 "The Godfather, Mario Puzo",结果显示在 URL 贴中。
问题
我正在尝试使用 read_html()
,但我不知道要在 html_nodes()
函数中包含什么来检索任何有意义的数据。我尝试使用 'table' 或类似的东西但没有用:returns 一个空列表。
最终目标是获得第一个搜索结果的 ISBN-13 或 ISBN-10。我可以处理这个,我只需要访问数据。
我假设*解决方案类似于:
url <- 'https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo'
data<-read_html(url) %>% html_nodes("something") %>% #maybe another function
但我不知道,希望有人能帮忙。
提前致谢。
如果您右键单击 Chrome 中的 ISBN 并选择 "Inspect",您将看到每个搜索结果都是一个具有以下结构的列表项(省略了一些元素清晰度):
<ul id="searchresults">
<li>
<div class="bookinfo">
<h2><a href="/isbn/9780451205766">The Godfather: 50th Anniversary Edition</a></h2>
<p>Author: Mario Puzo</p>
<p>ISBN-13: 9780451205766</p>
<p>ISBN-10: 0451205766</p>
<p class="clear"></p>
</div>
</li>
因此,您想要的元素的 CSS 选择器是 div.bookinfo p
。
您可以使用以下方法检索这些段落的文本:
p <- read_html("https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo")
p %>%
html_nodes("div.bookinfo p") %>%
html_text()
然后编写一些逻辑以仅访问感兴趣的 ISBN。例如,要 return 所有 ISBN 使用 grep
:
p %>%
html_nodes("div.bookinfo p") %>%
html_text() %>%
grep("ISBN*", ., value = TRUE)
[1] "ISBN-13: 9780451205766" "ISBN-10: 0451205766" "ISBN-13: 9780345441706"
"ISBN-10: 0345441702" "ISBN-13: 9780345432407"
[6] "ISBN-10: 0345432401" "ISBN-13: 9780345412218" "ISBN-10: 0345412214"
"ISBN-13: 9780345476722" "ISBN-10: 0345476727"
[11] "ISBN-13: 9781936530335" "ISBN-10: 1936530333"
描述
我正在抓取网页以检索相关数据。作为示例,我将使用此 URL:
例子
https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo
我的第一次迭代基本上是搜索 "The Godfather, Mario Puzo",结果显示在 URL 贴中。
问题
我正在尝试使用 read_html()
,但我不知道要在 html_nodes()
函数中包含什么来检索任何有意义的数据。我尝试使用 'table' 或类似的东西但没有用:returns 一个空列表。
最终目标是获得第一个搜索结果的 ISBN-13 或 ISBN-10。我可以处理这个,我只需要访问数据。
我假设*解决方案类似于:
url <- 'https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo'
data<-read_html(url) %>% html_nodes("something") %>% #maybe another function
但我不知道,希望有人能帮忙。
提前致谢。
如果您右键单击 Chrome 中的 ISBN 并选择 "Inspect",您将看到每个搜索结果都是一个具有以下结构的列表项(省略了一些元素清晰度):
<ul id="searchresults">
<li>
<div class="bookinfo">
<h2><a href="/isbn/9780451205766">The Godfather: 50th Anniversary Edition</a></h2>
<p>Author: Mario Puzo</p>
<p>ISBN-13: 9780451205766</p>
<p>ISBN-10: 0451205766</p>
<p class="clear"></p>
</div>
</li>
因此,您想要的元素的 CSS 选择器是 div.bookinfo p
。
您可以使用以下方法检索这些段落的文本:
p <- read_html("https://isbnsearch.org/search?s=THE+GODFATHER+%2C+Mario+Puzo")
p %>%
html_nodes("div.bookinfo p") %>%
html_text()
然后编写一些逻辑以仅访问感兴趣的 ISBN。例如,要 return 所有 ISBN 使用 grep
:
p %>%
html_nodes("div.bookinfo p") %>%
html_text() %>%
grep("ISBN*", ., value = TRUE)
[1] "ISBN-13: 9780451205766" "ISBN-10: 0451205766" "ISBN-13: 9780345441706"
"ISBN-10: 0345441702" "ISBN-13: 9780345432407"
[6] "ISBN-10: 0345432401" "ISBN-13: 9780345412218" "ISBN-10: 0345412214"
"ISBN-13: 9780345476722" "ISBN-10: 0345476727"
[11] "ISBN-13: 9781936530335" "ISBN-10: 1936530333"