2017-01-23 6 views
1

"rvest"で対処して遊んでいます。 "read_html"でデータを取得するのは問題ありません。webscraping:手動でタグを置き換える

library(rvest) 
# suppressMessages(library(dplyr)) 
library(stringr) 
library(XML) 

# get house data 
houseurl <- "http://boekhoff.de/immobilien/gepflegtes-zweifamilienhaus-in-ellwuerden/" 
house <- read_html(houseurl) 
house 

データの処理に問題があります。私の問題はソースでコメントされています。今、「BR」を交換することなく、

houseattribut <- house %>% 
html_nodes(css = "div.col-2 li p.data-left") %>% 
html_text(trim=TRUE) 
# shows "Error in UseMethod("xml_find_all") : ... " 
# but all attributes are shown on screen 
houseattribut 

を動作しないよう、詳細を読んで、それはそう

## eleminating <br>-tags in address 
# using the following commands causes error using "html_nodes" 
str_extract_all(house,"<br>") ## show all linebreaks 
# replacing <br> in whitespace " ", 
house <- str_replace_all(house,"<br>", " ") 

は、手動でその作業を - タグが、「HTML_TEXTは」

一緒に文字列を締め私が間違ってやっている
housedetails <- house %>% 
html_nodes(css = "div.col-2 li p.data-right") %>% 
html_text() 
housedetails 
# the same error shows "Error in UseMethod("xml_find_all") : ... " 
# but all details are shown on screen 

housedetails[4] 
# in the source there is: "Ellwürder Straße 17<br>26954 Nordenham" 
# at <br>-tag should be a whitespace 

任意のヒント?

答えて

0

問題は、あなたがread_htmlを使用するときに、それはchrになったstr_replace_allを使用した後、houseは、xml_documentであるということですので、あなたは再びノードをフィルタ処理しようとすると、そのことよりxml_document、それはあなたにエラーが発生します。

あなたはxml_documentに再びそれを変換するか、またはノードによって交換するノードを適用する必要があります。そのような

何か:

house <- read_html(str_replace_all(house,"<br>", " ")) 

全コード:

library(rvest) 
#> Loading required package: xml2 
library(stringr) 

houseurl <- "http://boekhoff.de/immobilien/gepflegtes-zweifamilienhaus-in-ellwuerden/" 
house <- read_html(houseurl) 

house <- read_html(str_replace_all(house,"<br>", " ")) 

housedetails <- house %>% 
    html_nodes(css = "div.col-2 li p.data-right") %>% 
    html_text() 

housedetails[4] 
#> [1] "Ellwürder Straße 17 26954 Nordenham" 
+0

どうもありがとう、それは私が探しているものです。 – wattnwurm

関連する問題