当URL是静态的时,如何从多页信息中删除数据?

时间:2014-12-23 19:28:49

标签: xml r readlines

我正在学习如何使用R从网页上抓取数据。与我合作的网站是:

http://sheriff.franklincountyohio.gov/search/real-estate/results.aspx?q=searchType%3dSaleDate%26searchString%3d12%2f26%2f2014+12%3a00%3a00+AM%26foreclosureType%3d%26sortType%3ddefendant%26saleDateFrom%3d%26saleDateTo%3d

问题是列表不在1页上,但在这种情况下,在7个不同的页面上。用户通过底部的箭头按钮导航到下一页。但是,URL是静态的。无论是在第1页还是第5页,URL都保持不变。因此,我不知道如何将R指向下一页以检索其他信息。

目前我使用readLines从页面中获取数据。

con <- url("http://sheriff.franklincountyohio.gov/search/real-estate/results.aspx?q=searchType%3dSaleDate%26searchString%3d12%2f26%2f2014%26foreclosureType%3d%26sortType%3ddefendant")
html <- readLines(con)
close(con)

然后XML包开始解析我想要的数据。

html.data <- htmlTreeParse(html, useInternalNodes = TRUE)

由于防火墙,我在使用XML,RCurl和httr包时遇到了麻烦。上面的方法似乎是我可以抓取数据的唯一方法。所以我的功能可能会受限于链接。

任何帮助将不胜感激!我搜索了一堆,似乎无法找到答案。

1 个答案:

答案 0 :(得分:0)

在网页中,您有“打印销售清单”按钮,该按钮显示一个新的信息,其中包含在单个页面中编译的所有信息(可能在您发布问题时,网页没有该按钮)。

url<-'http://sheriff.franklincountyohio.gov/search/real-estate/printresults.aspx?q=searchType%3dSaleDate%26searchString%3d12%2f26%2f2014+12%3a00%3a00+AM%26foreclosureType%3d%26sortType%3ddefendant%26saleDateFrom%3d%26saleDateTo%3d'
table<-readHTMLTable(url)
table1<-as.data.frame(table)
str(table1)
'data.frame':   92 obs. of  8 variables:
 $ c_printsearchresults_gvResults.Case.Number         : Factor w/ 92 levels "07CV4653\r\n                        PLURIESBANKRUPTCY",..: 23 47 33 90 91 82 85 77 68 83 ...
 $ c_printsearchresults_gvResults.Property.Address    : Factor w/ 92 levels "1038\r\n                        \r\n                        \r\n                        S OHIO AVENUE\r\n                      "| __truncated__,..: 7 80 85 26 79 37 83 55 51 33 ...
 $ c_printsearchresults_gvResults.Plaintiff...Attorney: Factor w/ 83 levels "Plaintiff:\r\n                        \r\n                        BAC HOME LOANS SERVICING LP FKA COUNTRYWIDE HOME LOANS SERVIC"| __truncated__,..: 5 31 80 74 49 14 73 52 39 41 ...
 $ c_printsearchresults_gvResults.Defendant           : Factor w/ 92 levels "ADEDEJI-FAJOBI/MODUPE/O",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ c_printsearchresults_gvResults.Appraised           : Factor w/ 59 levels "$10,268.33","$10,988.28",..: 48 20 18 10 25 6 41 58 35 15 ...
 $ c_printsearchresults_gvResults.Opening.Bid         : Factor w/ 63 levels "$10,268.33","$10,988.28",..: 38 5 4 52 11 51 29 45 23 63 ...
 $ c_printsearchresults_gvResults.Deposit             : Factor w/ 61 levels "$1,200.00","$10,268.33",..: 49 20 18 53 26 7 42 58 28 16 ...
 $ c_printsearchresults_gvResults.Sale.Date           : Factor w/ 1 level "12/26/2014": 1 1 1 1 1 1 1 1 1 1 ...

如果要删除或分隔更多列中的数据,可以使用正则表达式。