gpt4 book ai didi

r - 使用循环通过网络抓取创建表格

转载 作者:行者123 更新时间:2023-12-05 00:57:57 25 4
gpt4 key购买 nike

我正在尝试通过 webscrape tax-rates.org 获取德克萨斯州每个县的平均税率。我在一个 csv 文件中有一个 255 个县的列表,我将其导入为“TX_counties”,它是一个单列表。我必须将每个县的 URL 创建为一个字符串,因此我使用 [i,1] 将 d1 设置为第一个单元格,然后将其连接到一个 URL 字符串中,执行刮取,然后将 +1 添加到 [i] 中,这使得它转到下一个县名的第二个单元格,并继续该过程。

问题是我不知道如何将抓取结果存储到“增长列表”中,然后我想将其制作成表格并在最后保存到 .csv 文件。我一次只能刮一个县,然后它自己重写。

有什么想法吗? (对 R 来说相当新,一般来说是抓取)

i <- 1
for (i in 1:255) {

d1 <- as.character(TX_counties[i,1])

uri.seed <- paste(c('http://www.tax-rates.org/texas/',d1,'_county_property_tax'), collapse='')

html <- htmlTreeParse(file = uri.seed, isURL=TRUE, useInternalNodes = TRUE)

avg_taxrate <- sapply(getNodeSet(html, "//div[@class='box']/div/div[1]/i[1]"), xmlValue)

t1 <- data.table(d1,avg_taxrate)

i <- i+1

}

write.csv(t1,"2015_TX_PropertyTaxes.csv")

最佳答案

这使用 rvest , 提供了一个进度条,并利用了 URL 已经存在于页面上的事实:

library(rvest)
library(pbapply)

pg <- read_html("http://www.tax-rates.org/texas/property-tax")

# get all the county tax table links
ctys <- html_nodes(pg, "table.propertyTaxTable > tr > td > a[href*='county_property']")

# match your lowercased names
county_name <- tolower(gsub(" County", "", html_text(ctys)))

# spider each page and return the rate %
county_rate <- pbsapply(html_attr(ctys, "href"), function(URL) {
cty_pg <- read_html(URL)
html_text(html_nodes(cty_pg, xpath="//div[@class='box']/div/div[1]/i[1]"))
}, USE.NAMES=FALSE)

tax_table <- data.frame(county_name, county_rate, stringsAsFactors=FALSE)

tax_table
## county_name county_rate
## 1 anderson Avg. 1.24% of home value
## 2 andrews Avg. 0.88% of home value
## 3 angelina Avg. 1.35% of home value
## 4 aransas Avg. 1.29% of home value

write.csv(tax_table, "2015_TX_PropertyTaxes.csv")

注意 1:我将抓取限制为 4,以免破坏提供免费数据的站点的带宽。

注意 2:该站点上只有 254 个县税收链接可用,因此如果您有 255 个,您似乎还有一个额外的链接。

关于r - 使用循环通过网络抓取创建表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com