在 R 中创建网络抓取循环
Creating a webscraping loop in R
我正在尝试在 R 中设置一个网络抓取循环,但我真的很难创建一个有效的循环。
我目前有一个 excel 文件,其中包含我想要抓取的相关 URL。我将其读入 R 并尝试使用网络抓取来提取每个 URL 的产品标题,这些产品当前位于标题为 DE
的列中。 table 的一个简短示例是:
我一直使用的代码是:
library(readxl)
URL_creator <- read_excel("URL creator.xlsx")
library(rvest)
content_list <- vector()
for (i in 1:nrow(URL_creator)) {
url <- URL_creator[i,]$DE
html <- read_html(url)
nodes <- html_nodes(html, "productTitle") %>%
html_text() %>%
gsub("\n", "", .) %>%
trimws()
{ content_list[i] <- nodes[1]
}}
由于某种原因,内容列表 returned 是空白的。我希望它会 return 标题为 DE
的列中每个相应 URL 的产品标题,但我不确定哪里出错了。
非常感谢任何帮助:)
谢谢!
我对您的代码进行了一些更改并且工作正常。看看:
for (i in URL_creator$DE) {
html <- read_html(i)
nodes <- html_nodes(html, "title") %>%
html_text() %>%
gsub("\n", "", .) %>%
trimws()
{ content_list[i] <- nodes[1]
}}
content_list[1]
的输出是:
https://amazon.de/dp/B0821PBSPJ "Planet Waves D'Addario 10MB00
Mandolinengurt, geflochten, 2,5 cm, Braun/cremefarben : Amazon.de:
Musikinstrumente & DJ-Equipment"
更新
要将结果 (content_list
) 转换为数据框,您应该更改行:
content_list[i] <- nodes[1]
如下:
content_list[i] <- as.data.frame(nodes[1])%>%
t()
它将 content_list
转换为数据框并将列转换为行。
我正在尝试在 R 中设置一个网络抓取循环,但我真的很难创建一个有效的循环。
我目前有一个 excel 文件,其中包含我想要抓取的相关 URL。我将其读入 R 并尝试使用网络抓取来提取每个 URL 的产品标题,这些产品当前位于标题为 DE
的列中。 table 的一个简短示例是:
我一直使用的代码是:
library(readxl)
URL_creator <- read_excel("URL creator.xlsx")
library(rvest)
content_list <- vector()
for (i in 1:nrow(URL_creator)) {
url <- URL_creator[i,]$DE
html <- read_html(url)
nodes <- html_nodes(html, "productTitle") %>%
html_text() %>%
gsub("\n", "", .) %>%
trimws()
{ content_list[i] <- nodes[1]
}}
由于某种原因,内容列表 returned 是空白的。我希望它会 return 标题为 DE
的列中每个相应 URL 的产品标题,但我不确定哪里出错了。
非常感谢任何帮助:)
谢谢!
我对您的代码进行了一些更改并且工作正常。看看:
for (i in URL_creator$DE) {
html <- read_html(i)
nodes <- html_nodes(html, "title") %>%
html_text() %>%
gsub("\n", "", .) %>%
trimws()
{ content_list[i] <- nodes[1]
}}
content_list[1]
的输出是:
https://amazon.de/dp/B0821PBSPJ "Planet Waves D'Addario 10MB00 Mandolinengurt, geflochten, 2,5 cm, Braun/cremefarben : Amazon.de: Musikinstrumente & DJ-Equipment"
更新
要将结果 (content_list
) 转换为数据框,您应该更改行:
content_list[i] <- nodes[1]
如下:
content_list[i] <- as.data.frame(nodes[1])%>%
t()
它将 content_list
转换为数据框并将列转换为行。