【发布时间】:2022-06-11 22:33:30
【问题描述】:
所以我试图在 R 中做一个网络爬虫,以便做一个结构主题模型
当我执行它时,我收到以下错误:
if (file == "") { 中的错误:条件的长度 > 1 另外:警告信息: 在 readLines(con = url_f, ) 中: 在“https://www.reddit.com/r/Bitcoin/”上找到不完整的最后一行
我目前使用的通用代码是: (我知道这里的一些包对于我展示的部分是不必要的)
install.packages("jsonlite")
install.packages("tidyverse")
install.packages("dplyr")
install.packages("httr")
install.packages("RedditExtractoR")
install.packages("stm")
install.packages("stminsights")
install.packages("XML")
install.packages("RCurl")
install.packages("rvest")
install.packages("quanteda")
install.packages("xml2")
install.packages("scales")
install.packages("htmltools")
library(stminsights)
library(stm)
library(jsonlite)
library(tidyverse)
library(dplyr)
library(httr)
library(XML)
library(RCurl)
library(rvest)
library(quanteda)
library(xml2)
library(scales)
library(htmltools)
library(RedditExtractoR)
extract_links= function(url){
url_f<-url
data <- readLines(con = url_f,)
parsed_data <- htmlParse(file= data)
data_from_page<- html(parsed_data) %>%
html_nodes(".comment,.bylink") %>%
html_attr(name = "href")
}
extract_data= function(url){
url_d<-url
data <- readLines(con = url_d,)
parsed_data <- htmlParse(file= data)
data_from_page<- html(parsed_data) %>%
html_nodes(".md,.usertext-body") %>%
html_text()
data_from_page<- data_from_page[-c(1,2)]
}
Links_for_crawling= function(url,threshold){
url_d<-url
data <- readLines(con = url_d,)
parsed_data <- htmlParse(file= data)
data_from_page<- html(parsed_data) %>%
html_nodes(".comment,.bylink") %>%
html_text()
comments<-strsplit(data_from_page," ")
len<-vector()
for(i in 1:length(comments)){
test<-as.integer(comments[[i]][1])
if(!is.na(test)){
len[i]<-as.integer(comments[[i]][1])
}else{
print("Came to else")
len[i]<-0
}
}
threshold1<-threshold
link_index_to_crawl<-which(len>threshold1)
}
get_next_page_links= function(url){
main_url<-url
f_data <- readLines(con = main_url,)
parsed_data_f <- htmlParse(file= f_data)
data_from_page_f<- html(parsed_data_f) %>%
html_nodes(".next-button") %>%
html_children()
htmltxt <- paste(capture.output(data_from_page_f, file=NULL))
next_link<-htmltxt[3]
next_link<-strsplit(next_link,split ="\"")[[1]][2]
}
这里似乎发生了错误
subreddits<-c("Bitcoin","CryptoCurrency","CryptoMarkets","ethtrader","dogecoin","ethereum","SHIBArmy","CryptoMoonShots","BitcoinBeginners","Cardano")
threshold_for_comment<-100
for(i in 1:length(subreddits)){
reddit<-"https://www.reddit.com/r/"
starting_url <-paste(reddit, subreddits[i],"/",sep = "")
logFile = paste("Reddit_comment_", subreddits[i],".txt",sep = "")
cat("Scrapping Subreddit:",subreddits[i])
while(!is.na(starting_url)) {
links=extract_links(starting_url)
links_index_to_crawl<-Links_for_crawling(starting_url,threshold_for_comment)
for(j in links_index_to_crawl){
link<-links[j]
data<-extract_data(link)
cat("Scrapping Page:",j)
cat(link, file=logFile, append=TRUE, sep = "\n")
cat(data, file=logFile, append=TRUE, sep = "\n")
}
next_l<-get_next_page_links(starting_url)
starting_url<-next_l
print("next_link")
print(next_l)
}
}
任何帮助将不胜感激,ty :)
【问题讨论】:
-
html属于哪个库?你试过::html 吗?
标签: html function screen-scraping r-package