这是我正在运行的代码
library(rvest)
rootUri <- "https://github.com/rails/rails/pull/"
PR <- as.list(c(100, 200, 300))
list <- paste0(rootUri, PR)
messages <- lapply(list, function(l) {
html(l)
})
Run Code Online (Sandbox Code Playgroud)
直到这一点它似乎工作正常,但当我尝试提取文本时:
html_text(messages)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error in xml_apply(x, XML::xmlValue, ..., .type = character(1)) :
Unknown input of class: list
Run Code Online (Sandbox Code Playgroud)
试图提取特定元素:
html_text(messages[1])
Run Code Online (Sandbox Code Playgroud)
不能这样做......
Error in xml_apply(x, XML::xmlValue, ..., .type = character(1)) :
Unknown input of class: list
Run Code Online (Sandbox Code Playgroud)
所以我尝试了另一种方式:
html_text(messages[[1]])
Run Code Online (Sandbox Code Playgroud)
这似乎至少得到了数据,但仍然没有成功:
Error in UseMethod("xmlValue") :
no applicable method for 'xmlValue' applied to an object of class "c('HTMLInternalDocument', 'HTMLInternalDocument', 'XMLInternalDocument', 'XMLAbstractDocument')"
Run Code Online (Sandbox Code Playgroud)
如何从列表中的每个元素中提取文本材料?
我尝试从网站上提取一些信息
library(rvest)
library(XML)
url <- "http://wiadomosci.onet.pl/wybory-prezydenckie/xcnpc"
html <- html(url)
nodes <- html_nodes(html, ".listItemSolr")
nodes
Run Code Online (Sandbox Code Playgroud)
我得到30个HTML代码的"列表".我希望从"list"提取最后一个href属性的每个元素,所以对于30.元素它将是
<a href="http://wiadomosci.onet.pl/kraj/w-sobote-prezentacja-hasla-i-programu-wyborczego-komorowskiego/tvgcq" title="W sobot? prezentacja has?a i programu wyborczego Komorowskiego">
Run Code Online (Sandbox Code Playgroud)
所以我想得到字符串
"http://wiadomosci.onet.pl/kraj/w-sobote-prezentacja-hasla-i-programu-wyborczego-komorowskiego/tvgcq"
Run Code Online (Sandbox Code Playgroud)
问题是html_attr(nodes, "href")行不通(我得到NA的矢量).所以我想到了正则表达式,但问题nodes是不是字符列表.
class(nodes)
[1] "XMLNodeSet"
Run Code Online (Sandbox Code Playgroud)
我试过了
xmlToList(nodes)
Run Code Online (Sandbox Code Playgroud)
但它也不起作用.
所以我的问题是:如何使用为HTML创建的某个函数提取此URL?或者,如果不可能,我如何将XMLNodeSet转换为字符列表?
我是网络抓取的新手,我正试图在多个网页上刮取表格.这是网站:http://www.baseball-reference.com/teams/MIL/2016.shtml
我能够轻松地在一页上刮一张桌子rvest.有多个表,但我只想抓第一个,这是我的代码
library(rvest)
url4 <- "http://www.baseball-reference.com/teams/MIL/2016.shtml"
Brewers2016 <- url4 %>% read_html() %>%
html_nodes(xpath = '//*[@id="div_team_batting"]/table[1]') %>%
html_table()
Brewers2016 <- as.data.frame(Brewers2016)
Run Code Online (Sandbox Code Playgroud)
问题是我想要抓住可追溯到1970年的页面上的第一个表格.在表格上方的左上角有一个指定前一年的链接.有人知道我怎么做吗?
我也对不同的方法持开放态度,例如,除了rvest之外的其他方法可能会更好.我用rvest是因为它是我开始学习的那个.
有没有从Yahoo!抓取数据的经验的人?带R?的财务关键统计页面?我从HTML直接使用我熟悉的刮擦数据read_html,html_nodes()以及html_text()从rvest包。但是,此网页的MSFT关键统计信息有些复杂,我不确定是否所有统计信息都保存在XHR,JS或Doc中。我猜数据存储在JSON中。如果有人知道使用R提取和解析此网页数据的好方法,请回答我的问题,在此先感谢您!
或者,如果有一种更便捷的方法可以通过quantmod或提取这些指标Quandl,请告诉我,这将是一个非常好的解决方案!
我正在尝试使用rvest 从http://www.basketball-reference.com/teams/CHI/2015.html中删除.我使用了selectorgadget,发现标签对于我想要的表是#advanced.但是,我注意到它没有捡到它.查看页面源代码,我注意到这些表位于html注释标记内<!--
从评论标签中获取表格的最佳方法是什么?谢谢!
编辑:我正试图拉出"高级"表:http://www.basketball-reference.com/teams/CHI/2015.html#advanced :::none
我试图在 Selector Gadget 扩展程序的帮助下,通过 rvest 包从一些沃尔玛商店获取价格和库存状况。我能够获得商店的地址,但无法获得价格和库存状况。任何建议将不胜感激!
这是我到目前为止所做的
library(dplyr)
library(rvest)
url <- read_html("http://www.walmart.com/store/25/search?query=50636282")
selector_name<-".cs-secondary-copy"
fnames <- html_nodes(x = url, css = selector_name) %>%
html_text()
fnames
price <- html_nodes(x = url, css = ".sup") %>%
html_text() %>%
as.numeric()
price
stock <- html_nodes(x = url, css = ".stockStatus-unavailable") %>%
html_text()
stock
Run Code Online (Sandbox Code Playgroud)
输出
> fnames
[1] "4820 S Clark St, Mexico, MO 65265" "Item availability is updated every day at midnight."
> price
numeric(0)
> stock
character(0)
Run Code Online (Sandbox Code Playgroud)
来自 Selector Gadget 的相关数据
<span class="cs-secondary-copy">4820 S …Run Code Online (Sandbox Code Playgroud) 我使用rvest包从网页上删除了一个大表,但是它将它作为单个向量读取:
foo<-c("A","B","C","Dog","1","2","3","Cat","4","5","6","Goat","7","8","9")
Run Code Online (Sandbox Code Playgroud)
我需要处理的数据帧看起来像这样:
bar<-as.data.frame(cbind(Animal=c("Dog","Cat","Goat"),A=c(1,4,7),B=c(2,5,8),C=c(3,6,9)))
Run Code Online (Sandbox Code Playgroud)
这可能是一个简单的困境,但我很感激帮助.
我想抓住这个网址:https://prog.nfz.gov.pl/app-jgp/GrupaSzczegoly.aspx? id = 2AfRAM1JYDoYzktSMvdOhFiPm2Fnh67q
它列出了每个地区医疗程序的统计数据,html具有结构:标题和相应的表格,全国所有地区的16次.
在简化的html中:
<div class="tytul">01 - NameOfDistrict_01</div>
<table>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">950</span>
</td>
...
</table>
<div class="tytul">02 - NameOfDistrict_02</div>
<table>
<tr>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">350</span>
</td>
...
</td>
</table>
<div class="tytul">nn - NameOfDistrict_nn</div>
<table>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">850</span>
</td>
...
</table>
Run Code Online (Sandbox Code Playgroud)
我不需要刮掉整个表格(如果可以的话我会很好)我只需要一个或两个值,所以我试着用Selector Gadget查看页面.我感兴趣的一个值是节点#ContentPlaceHolder1_lblbw中存在的过程数量,并且前面是标题即.tytul类.
mydata <- read_html(....) %>% html_nodes(name, "#ContentPlaceHolder1_lblbw") %>%
html_text()
Run Code Online (Sandbox Code Playgroud)
但是这个占位符会针对每个区域重复.然后我需要在表格上方的标题之后阅读第一个这样的占位符.并记录下面的每个标题和表格.
如何将这样的表刮到数据帧
District No. …Run Code Online (Sandbox Code Playgroud) 我有一个如下的 html 数据集,我想将其解析并转换为我可以使用的表格格式。
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<div class="brewery" id="brewery">
<ul class="vcard simple">
<li class="name"> Bradley Farm / RB Brew, LLC</li>
<li class="address">317 Springtown Rd </li>
<li class="address_2">New Paltz, NY 12561-3020 | <a href='http://www.google.com/maps/place/317 Springtown Rd++New Paltz+NY+United States' target='_blank'>Map</a> </li>
<li class="telephone">Phone: (845) 255-8769</li>
<li class="brewery_type">Type: Micro</li>
<li class="url"><a href="http://www.raybradleyfarm.com" target="_blank">www.raybradleyfarm.com</a> </li>
</ul>
<ul class="vcard simple col2"></ul>
</div>
<div class="brewery">
<ul class="vcard simple">
<li class="name">(405) Brewing Co</li>
<li class="address">1716 Topeka St </li>
<li class="address_2">Norman, OK 73069-8224 …Run Code Online (Sandbox Code Playgroud) 我正在使用以下 rvest 代码:
library(rvest)
URL <- "http://www.soccerstats.com/matches.asp" #Feed page
WS <- read_html (URL) #reads webpage into WS variable
URLs <- WS %>% html_nodes ("a:nth-child(1)") %>% html_attr("href") %>% as.character() # Get the CSS nodes & extract the URLs
URLs <- paste0("http://www.soccerstats.com/",URLs)
grepl("pmatch", oversdf$URLs)
URLs <-subset(oversdf, grepl("pmatch", oversdf$URLs),stringsAsFactors = FALSE)
Catcher1 <- data.frame(FMatch=character(),TotalGoals=character (),stringsAsFactors = FALSE)
#Start of for loop
for (i in URLs) {
WS1 <- read_html(i)
FMatch <- WS1 %>% html_nodes("H1") %>% html_text() %>% as.character()
TotalGoals <- WS1 %>% html_nodes(".trow3+ …Run Code Online (Sandbox Code Playgroud) r ×10
rvest ×10
web-scraping ×7
html ×2
dataframe ×1
html-parsing ×1
quandl ×1
quantmod ×1
rselenium ×1
scrape ×1