【问题标题】:Using 'rvest' to extract links使用“rvest”提取链接
【发布时间】:2016-05-16 18:44:36
【问题描述】:

我正在尝试从 Yelp 中抓取数据。一个步骤是从每家餐厅提取链接。例如,我搜索纽约市的餐馆并得到一些结果。然后我想提取 Yelp 在第 1 页推荐的所有 10 家餐厅的链接。这是我尝试过的:

library(rvest)     
page=read_html("http://www.yelp.com/search?find_loc=New+York,+NY,+USA")
page %>% html_nodes(".biz-name span") %>% html_attr('href')

但代码总是返回“NA”。任何人都可以帮助我吗?谢谢!

【问题讨论】:

  • 尝试使用 RSelenium。效果很好。
  • @Bharath,谢谢!我知道如何使用 RSelenium 来做到这一点。我只是想看看我是否可以只使用 rvest 包。
  • 但是即使使用 Selenium 包,我也无法获取属性,它再次为我返回 NA
  • 您违反了他们Terms of Service 的B 条。他们有一个 API。为什么不使用它?
  • @hrbrmstr,谢谢。我会看看他们的 API。

标签: r web-scraping yelp rvest


【解决方案1】:
library(rvest)     
page <- read_html("http://www.yelp.com/search?find_loc=New+York,+NY,+USA")
page %>% html_nodes(".biz-name") %>% html_attr('href')

希望这会简化您的问题

【讨论】:

  • 你能解释一下“biz-name”部分吗?我不认为这是一门课。
【解决方案2】:

我还能够从上面清除对我来说非常嘈杂的结果

links &lt;- page %&gt;% html_nodes("a") %&gt;% html_attr("href")

用一个简单的正则表达式字符串匹配

links &lt;- links[which(regexpr('common-url-element', links) &gt;= 1)].

【讨论】:

  • 或者,如果您想在tidyverse 中执行此操作,您可以将%&gt;% str_subset("your regex here") 添加到该管道的末尾。
猜你喜欢
  • 1970-01-01
  • 2018-11-19
  • 2017-10-11
  • 2018-11-03
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多