标签: rvest

Rvest刮错误

这是我正在运行的代码

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)

如何从列表中的每个元素中提取文本材料?

r web-scraping rvest

1
推荐指数
1
解决办法
6642
查看次数

提取href attr或将节点转换为字符列表

我尝试从网站上提取一些信息

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转换为字符列表?

html r rvest

1
推荐指数
1
解决办法
1979
查看次数

在r中使用rvest在多个网页上刮表

我是网络抓取的新手,我正试图在多个网页上刮取表格.这是网站: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是因为它是我开始学习的那个.

r web-scraping rvest

1
推荐指数
1
解决办法
1209
查看次数

网络抓取Yahoo!中的关键统计数据 R金融

有没有从Yahoo!抓取数据的经验的人?带R?的财务关键统计页面?我从HTML直接使用我熟悉的刮擦数据read_htmlhtml_nodes()以及html_text()rvest包。但是,此网页的MSFT关键统计信息有些复杂,我不确定是否所有统计信息都保存在XHR,JS或Doc中。我猜数据存储在JSON中。如果有人知道使用R提取和解析此网页数据的好方法,请回答我的问题,在此先感谢您!

或者,如果有一种更便捷的方法可以通过quantmod或提取这些指标Quandl,请告诉我,这将是一个非常好的解决方案!

r web-scraping quantmod rvest quandl

1
推荐指数
1
解决办法
2747
查看次数

如何使用R在HTML中的注释标记内抓取表格?

我正在尝试使用rvest 从http://www.basketball-reference.com/teams/CHI/2015.html中删除.我使用了selectorgadget,发现标签对于我想要的表是#advanced.但是,我注意到它没有捡到它.查看页面源代码,我注意到这些表位于html注释标记内<!--

从评论标签中获取表格的最佳方法是什么?谢谢!

编辑:我正试图拉出"高级"表:http://www.basketball-reference.com/teams/CHI/2015.html#advanced :::none

r html-parsing web-scraping scrape rvest

1
推荐指数
2
解决办法
1426
查看次数

使用 rvest 从 Walmart 获取价格

我试图在 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)

r css-selectors web-scraping rvest

1
推荐指数
1
解决办法
689
查看次数

从网页上抓取的表格被视为单个字符向量:如何转换为数据框?

我使用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)

这可能是一个简单的困境,但我很感激帮助.

r dataframe rvest

1
推荐指数
1
解决办法
101
查看次数

rvest:使用前面的标题抓取多个表格

我想抓住这个网址:https://prog.n​​fz.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)

r web-scraping rselenium rvest

1
推荐指数
1
解决办法
351
查看次数

使用 R 解析 HTML 数据

我有一个如下的 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)

html r web-scraping rvest

1
推荐指数
1
解决办法
5463
查看次数

Rvest - UseMethod("read_xml") 中的错误:没有适用于“read_xml”的方法应用于“factor”类的对象

我正在使用以下 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 rvest

1
推荐指数
1
解决办法
7444
查看次数