- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从以下链接 http://cepea.esalq.usp.br/frango/?page=379&Dias=15 中抓取第二个表
我使用 XML 包尝试了以下 R 代码:
p_frango_resfriado <- htmlTreeParse("http://cepea.esalq.usp.br/frango/?page=379&Dias=15",
useInternalNodes = TRUE,
encoding = "UTF-8")
xpathSApply(p_frango_resfriado, "//table[@width = '95%']//tr//td[2]", xmlValue)
xpathSApply(p_frango_resfriado, "//table[@width = '95%']//tr//td[3]", xmlValue)
xpathSApply(p_frango_resfriado, "//table[@width = '95%']//tr//td[4]", xmlValue)
xpathSApply(p_frango_resfriado,
"//a[text() = 'Preços do frango resfriado CEPEA/ESALQ - Estado SP']/table[@width = '95%']",
xmlValue)
最佳答案
使用 XML::xmlToDataFrame
使用 XPath 查询
library("httr")
library("XML")
URL <- "http://cepea.esalq.usp.br/frango/?page=379&Dias=15"
temp <- tempfile(fileext = ".html")
GET(url = URL, user_agent("Mozilla/5.0"), write_disk(temp))
xpexpr <- "//center/a[contains(., 'do frango congelado')]/../table/tr/td/font/tr"
xpexpr <- "//center/a[contains(., 'do frango resfriado')]/../table/tr/td/font/tr"
doc <- htmlParse(temp)
listofTableNodes <- getNodeSet(doc, xpexpr)
length_nodes <- length(listofTableNodes)
include_indices1 <- 1:(length_nodes - 2)
# create dataframe using xmlvalues of the nodelist. Both `getNodeSet()`
# and `xpathSApply` will provide identical results.
# using `getNodeSet()`
df <- xmlToDataFrame(listofTableNodes[include_indices1], stringsAsFactors=FALSE)
# using `xpathSApply`
df <- xmlToDataFrame(xpathSApply(doc, xpexpr)[include_indices1], stringsAsFactors=FALSE)
# clean data
df$td <- as.Date(gsub("[Â ]\\s*", "", df$td), format = "%d/%m/%Y")
df[, 4] <- gsub("\t$", '', df[, 4])
# add column names
xpexpr <- "//center/a[contains(., 'do frango resfriado')]/../table/tr/td/font/text()"
# for Table-1
# xpexpr <- "//center/a[contains(., 'do frango congelado')]/../table/tr/td/font/text()"
listofTableNodes <- getNodeSet(doc, xpexpr)
colnames(df) <- c('Date', sapply(listofTableNodes, xmlValue))
df
# Date Valor R$ Var./dia Var./mês
# 1 2016-08-17 4,37 0,46% 8,17%
# 2 2016-08-16 4,35 0,46% 7,67%
# 3 2016-08-15 4,33 0,46% 7,18%
# 4 2016-08-12 4,31 0,00% 6,68%
# 5 2016-08-11 4,31 0,70% 6,68%
# 6 2016-08-10 4,28 0,47% 5,94%
# 7 2016-08-09 4,26 -0,70% 5,45%
# 8 2016-08-08 4,29 3,87% 6,19%
# 9 2016-08-05 4,13 0,49% 2,23%
# 10 2016-08-04 4,11 0,00% 1,73%
# 11 2016-08-03 4,11 1,73% 1,73%
# 12 2016-08-02 4,04 0,00% 0,00%
# 13 2016-08-01 4,04 0,00% 0,00%
# 14 2016-07-29 4,04 0,00% -0,49%
# 15 2016-07-28 4,04 -0,25% -0,49%
length_nodes
将其考虑在内.
XML::readHTMLTable
没有 XPath 查询
library("httr")
library("XML")
URL <- "http://cepea.esalq.usp.br/frango/?page=379&Dias=15"
temp <- tempfile(fileext = ".html")
GET(url = URL, user_agent("Mozilla/5.0"), write_disk(temp))
df <- readHTMLTable(temp, stringAsFactors = FALSE, which = 8)
# Table 1
df[4:18,]
# Table 2
df[28:42,]
XML::readHTMLTable
使用 XPath 查询
library("httr")
library("XML")
URL <- "http://cepea.esalq.usp.br/frango/?page=379&Dias=15"
temp <- tempfile(fileext = ".html")
GET(url = URL, user_agent("Mozilla/5.0"), write_disk(temp))
doc <- htmlParse(temp)
# XPath Query
# Table -1
xpexpr <- "//center/a[contains(., 'do frango congelado')]/../table/tr/td/font"
df <- xpathSApply(doc, xpexpr, readHTMLTable)
include_indices <- 1:(nrow(df[[4]]) -4)
df <- df[[4]][include_indices,]
# Table-2
xpexpr <- "//center/a[contains(., 'do frango resfriado')]/../table/tr/td/font"
df <- xpathSApply(doc, xpexpr, readHTMLTable)
include_indices <- 1:(nrow(df[[4]]) -4)
df <- df[[4]][include_indices,]
关于html - 无法在 R 中使用 xpathSapply 选择特定的 html 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006255/
以下网址包含数字和表格,我喜欢阅读表格的前两列。 xpatahSApply 命令工作正常,但我需要以两个以上的属性为条件,我无法弄清楚。 url ="http://floodobservatory.c
我正在尝试从网站的一部分中提取文本。包含文本的div节点还包含几个子节点,每个子节点都有自己的文本或其他内容。但是,我只希望顶部节点中的文本而不是其子级中的文本! 这是相关页面部分的样子:
我正在尝试提取包含一首阿拉伯诗的表格。您可以在here查看这首诗 我尝试解析表格... URL % read_html() %>% html_nodes(xpath = '//p[@class
假设我有以下内容: library(XML) my.xml Star Trek TNG 1.0 Doctor Who Babylo
这是对 a very similar question 的跟进我已经问过了,但这次我试图获取 xmlAttrs 而不是 xmlValue。假设我们有以下内容: my.xml Star
我正在尝试从以下链接 http://cepea.esalq.usp.br/frango/?page=379&Dias=15 中抓取第二个表 我使用 XML 包尝试了以下 R 代码: p_fra
我正在使用 xpathSApply(在 XML 包中)在 R 中抓取 XML,但无法提取属性。 首先,一段相关的 XML 片段: Fancy Product 我已经使
假设我使用以下表达式解析了一个网站 library(XML) url.df_1 = htmlTreeParse("http://www.appannie.com/app/android/com.kin
我有一堆网页,我想提取它们的发布日期。对于某些网页,日期位于“abbr”标签中(例如:abbr class=\"published\"title=\"2012-03-14T07:13:39+00:00
我正在尝试在 R 中解析以下 XML 文件:http://reports.ieso.ca/public/GenOutputCapability/PUB_GenOutputCapability_2014
我是一名优秀的程序员,十分优秀!