R 使用爬虫做网络爬虫,它不能捕获我需要的内容(文本挖掘)(台湾BBS,ptt) 这是台湾台北国立商业大学的乔。我目前正在通过社交媒体中的文本挖掘对网络游戏和电子体育进行研究。我选择从台湾最受欢迎的BBS“PTT”获取数据,但我的代码似乎只能捕获文章标题,而无法访问内容
我试着从www.ptt.cc/bbs/LoL/index6402.html到index6391获取文本,我使用的代码在这里或后面R 使用爬虫做网络爬虫,它不能捕获我需要的内容(文本挖掘)(台湾BBS,ptt) 这是台湾台北国立商业大学的乔。我目前正在通过社交媒体中的文本挖掘对网络游戏和电子体育进行研究。我选择从台湾最受欢迎的BBS“PTT”获取数据,但我的代码似乎只能捕获文章标题,而无法访问内容,r,text,text-mining,R,Text,Text Mining,我试着从www.ptt.cc/bbs/LoL/index6402.html到index6391获取文本,我使用的代码在这里或后面 install.packages("httr") install.packages("XML") install.packages("RCurl") install.packages("xml2") library(httr) library(XML) library(RCurl) library(xml2) data <- list() for( i
install.packages("httr")
install.packages("XML")
install.packages("RCurl")
install.packages("xml2")
library(httr)
library(XML)
library(RCurl)
library(xml2)
data <- list()
for( i in 6391:6402) {
tmp <- paste(i, '.html', sep='')
url <- paste('https://www.ptt.cc/bbs/LoL/index', tmp, sep='')
tmp <- read_html(url)
html <- htmlParse(getURL(url))
url.list <- xml_find_all(tmp, "//div[@class='title']/a[@href]")
data <- rbind(data, as.matrix(paste('https://www.ptt.cc', url.list, sep='')))
}
data <- unlist(data)
getdoc <- function(line){
start <- regexpr('https://www', line)[1]
end <- regexpr('html', line)[1]
if(start != -1 & end != -1){
url <- substr(line, start, end+3)
html <- htmlParse(getURL(url), encoding='UTF-8')
doc <- xpathSApply(html, "//div[@id='main-content']", xmlValue)
name <- strsplit(url, '/')[[1]][4]
write(doc, gsub('html', 'txt', name))
}
}
setwd("E:/data")
sapply(data, getdoc)
install.packages(“httr”)
install.packages(“XML”)
安装程序包(“RCurl”)
install.packages(“xml2”)
图书馆(httr)
库(XML)
图书馆(RCurl)
库(xml2)
数据类似于:
library(tidyverse)
library(rvest)
# change the end number
pages <- map(6391:6392, ~read_html(sprintf("https://www.ptt.cc/bbs/LoL/index%d.html", .)))
map(pages, ~xml_find_all(., "//div[@class='title']/a[@href]")) %>%
map(xml_attr, "href") %>%
flatten_chr() %>%
map_df(function(x) {
URL <- sprintf("https://www.ptt.cc%s", x)
pg <- read_html(URL)
data_frame(
url=URL,
text=html_nodes(pg, xpath="//div[@id='main-content']") %>% html_text()
)
}) -> df
glimpse(df)
## Observations: 40
## Variables: 2
## $ url <chr> "https://www.ptt.cc/bbs/LoL/M.1481947445.A.17B.html", "https://www.ptt.cc/b...
## $ text <chr> "作者rainnawind看板LoL標題[公告] LoL 板 開始舉辦樂透!時間Sat Dec 17 12:04:03 2016\nIMT KDM 勝...
库(tidyverse)
图书馆(rvest)
#更改结束号码
页数%
映射(xml_attr,“href”)%>%
展平\u chr()%>%
地图测向(功能(x){
URL-df
一瞥(df)
##意见:40
##变量:2
##$url“https://www.ptt.cc/bbs/LoL/M.1481947445.A.17B.html", "https://www.ptt.cc/b...
##$text“作者雷纳风看板英雄联盟標題[公告] 英雄联盟板 開始舉辦樂透!時間2016年12月17日星期六12:04:03\nIMT KDM勝...
要制作最后一部分的数据帧或子帧,请执行以下操作:
dir.create("pttdocs")
map(pages, ~xml_find_all(., "//div[@class='title']/a[@href]")) %>%
map(xml_attr, "href") %>%
flatten_chr() %>%
walk(function(x) {
URL <- sprintf("https://www.ptt.cc%s", x)
basename(x) %>%
tools::file_path_sans_ext() %>%
sprintf(fmt="%s.txt") %>%
file.path("pttdocs", .) -> fil
pg <- read_html(URL)
html_nodes(pg, xpath="//div[@id='main-content']") %>%
html_text() %>%
writeLines(fil)
})
目录创建(“pttdocs”)
映射(页面,~xml\u find\u all(,“//div[@class='title']]/a[@href]”)%%>%
映射(xml_attr,“href”)%>%
展平\u chr()%>%
步行(功能(x){
URL%
工具::文件\u路径\u sans\u ext()%>%
sprintf(fmt=“%s.txt”)%%>%
file.path(“pttdocs”,)->fil
pg%
html_text()%>%
写入线(fil)
})
将文件写入目录。欢迎使用SO。您需要发布一个最小的可复制示例,说明您正在尝试做什么以及为什么不起作用。链接到Dropbox上的代码(等)是粗略的,使其他人很难从这个网站上的解决方案中学习。我是一个新手,谢谢你的旅游建议,我修改它。我真的很感谢你的回答我尝试写。表(df,“filename.txt”,sep=“\t”,row.names=FALSE),但我想保存每一个内容。。。。