用 R 抓取 Kickstarter?
Scraping Kickstarter With R?
我试图在 Kickstarter 上进行众筹。但是,当我尝试获取引用项目的 URL 时,我没有得到结果。
这应该是结果之一:
这是我的代码:
代码:
main.page1 <- read_html(x ="https://www.kickstarter.com/discover/advanced?
category_id=1&sort=end_date&seed=2498921&page=1")
urls1 <- main.page1 %>% # feed `main.page` to the next step
html_nodes(".block.img-placeholder.w100p") %>% # get the CSS nodes
html_attr("href") # extract the URLs
有人看到我哪里错了吗?
首先声明你使用的所有包 - 我必须去搜索才能意识到我需要 rvest
:
> library(rvest)
> library(dplyr)
得到你的 HTML:
> main.page1 <- read_html(x ="https://www.kickstarter.com/discover/advanced?category_id=1&sort=end_date&seed=2498921&page=1")
就目前而言,每个项目的数据都存储在一堆 div 的 data-project
属性中。浏览器中的某些 Javascript(我怀疑是使用 React 框架构建的)通常会填充其他 DIV 并获取图像、格式化链接等。但是您刚刚抓取了原始 HTML,所以这不是'可用。但是原始数据是……所以……
相关的 div 似乎是 class "react-disc-landing" 所以这将数据作为文本字符串获取:
> data = main.page1 %>%
html_nodes("div.react-disc-landing") %>%
html_attr("data-project")
这些东西似乎是 JSON 字符串:
> substr(data[[1]],1,80)
[1] "{\"id\":208460273,\"photo\":{\"key\":\"assets/017/007/465/9b725fdf5ba1ee63e8987e26a1d33"
所以让我们使用rjson
包来解码第一个:
> library(rjson)
> jdata = fromJSON(data[[1]])
jdata
现在是一个非常复杂的嵌套列表。用str(jdata)
看看里面有什么。我不确定你想要它的哪一点,但也许这个 URL:
> jdata$urls$web$project
[1] "https://www.kickstarter.com/projects/1513052868/sense-of-place-by-jose-davila"
如果没有,你想要的 URL 一定在那个结构的某处。
重复 data[[i]]
以获取所有链接。
请注意,您应该查看允许您执行此操作的网站 T+C,并查看是否有您真正应该使用的 API。
我试图在 Kickstarter 上进行众筹。但是,当我尝试获取引用项目的 URL 时,我没有得到结果。
这应该是结果之一:
这是我的代码:
代码:
main.page1 <- read_html(x ="https://www.kickstarter.com/discover/advanced?
category_id=1&sort=end_date&seed=2498921&page=1")
urls1 <- main.page1 %>% # feed `main.page` to the next step
html_nodes(".block.img-placeholder.w100p") %>% # get the CSS nodes
html_attr("href") # extract the URLs
有人看到我哪里错了吗?
首先声明你使用的所有包 - 我必须去搜索才能意识到我需要 rvest
:
> library(rvest)
> library(dplyr)
得到你的 HTML:
> main.page1 <- read_html(x ="https://www.kickstarter.com/discover/advanced?category_id=1&sort=end_date&seed=2498921&page=1")
就目前而言,每个项目的数据都存储在一堆 div 的 data-project
属性中。浏览器中的某些 Javascript(我怀疑是使用 React 框架构建的)通常会填充其他 DIV 并获取图像、格式化链接等。但是您刚刚抓取了原始 HTML,所以这不是'可用。但是原始数据是……所以……
相关的 div 似乎是 class "react-disc-landing" 所以这将数据作为文本字符串获取:
> data = main.page1 %>%
html_nodes("div.react-disc-landing") %>%
html_attr("data-project")
这些东西似乎是 JSON 字符串:
> substr(data[[1]],1,80)
[1] "{\"id\":208460273,\"photo\":{\"key\":\"assets/017/007/465/9b725fdf5ba1ee63e8987e26a1d33"
所以让我们使用rjson
包来解码第一个:
> library(rjson)
> jdata = fromJSON(data[[1]])
jdata
现在是一个非常复杂的嵌套列表。用str(jdata)
看看里面有什么。我不确定你想要它的哪一点,但也许这个 URL:
> jdata$urls$web$project
[1] "https://www.kickstarter.com/projects/1513052868/sense-of-place-by-jose-davila"
如果没有,你想要的 URL 一定在那个结构的某处。
重复 data[[i]]
以获取所有链接。