13

R に、この Web ページhttp://cti.voa.gov.uk/cti/の「郵便番号で検索」フィールドに事前定義されたテキスト (例: BN1 1NA) を入力させ、次のページに進み、結果をスクレイピングしようとしています。 4 列の表。郵便番号によっては、複数のページにまたがる場合があります。さらに複雑にするために、「改善インジケーター」はテキスト フィールドではなく、画像ファイルです (郵便番号 BN1 3HP で検索すると表示されます)。画像が存在するかどうかに応じて、この列に 0 または 1 を含めることをお勧めします。

最終的に、画面上の 4 つの列を反映する素敵なデータ フレームを求めています。

私はこの質問からの提案を変更して、上で説明したことをうまく実行しようとしましたが、正直なところ、これを解読しようとする深みがありません。

R は私がする必要があることに最も適していないかもしれないことは理解していますが、私が利用できるのは R だけです。どんな助けでも大歓迎です。

4

2 に答える 2

5

VOA Web サイトの T&C がスクレイピングについて何と言っているかはわかりませんが、次のコードでうまくいきます。

library("httr")
library("rvest")
post_code <- "B1 1"
resp <- POST("http://cti.voa.gov.uk/cti/InitS.asp?lcn=0",
             encode = "form",
             body = list(btnPush = 1,
                         txtPageNum = 0,
                         txtPostCode = post_code,
                         txtRedirectTo = "InitS.asp",
                         txtStartKey = 0))
resp_cont <- read_html(resp)
council_table <- resp_cont %>%
  html_node(".scl_complex table") %>%
  html_table

Firebugには、POST ヘッダーを表示できる優れた「ネット」パネルがあります。最近のほとんどのブラウザには、同様の機能が組み込まれています。

于 2015-07-11T19:05:19.987 に答える
4

RSelenium を使用して、Exeter の郵便番号の市税リストを破棄します。

library(RSelenium)
library(RCurl)
input = 'EX4 2NU'
appURL <- "http://cti.voa.gov.uk/cti/"
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()
Sys.sleep(5)
remDr$navigate(appURL)
search.form <- remDr$findElement(using = "xpath", "//*[@id='txtPostCode']")
search.form$sendKeysToElement(list(input, key = "enter"))
doc <- remDr$getPageSource()
tbl = xpathSApply(htmlParse(doc[[1]]),'//tbody')
temp1 = readHTMLTable(tbl[[1]],header=F)

v = length(xpathSApply(htmlParse(doc[[1]]),'//a[@class="next"]'))
while (v != 0) {
    nextpage <- remDr$findElement(using = "xpath", "//*[@class = 'next']")
    nextpage$clickElement()
    doc <- remDr$getPageSource()
    tbl = xpathSApply(htmlParse(doc[[1]]),'//tbody')
    temp2 = readHTMLTable(tbl[[1]],header=F)
    temp1 = rbind(temp1,temp2)
    v = length(xpathSApply(htmlParse(doc[[1]]),'//a[@class="next"]'))
}
finaltable = temp1

お役に立てば幸いです。これ1つで複数ページのデータをスクラップできます。

于 2015-07-13T09:35:38.640 に答える