我正在尝试从这个网站收集数据
http://www.lkcr.cz/seznam-lekaru-426.html (它是捷克语)
我需要经历" Okres"(地区)和" Obor"(专业化)的所有可能组合
我尝试了rvest,但它似乎没有发现有任何下拉列表,html_form返回长度为0的列表。
因此,由于我仍然是R的新手,我怎么能问"网页向我展示新的页面组合?谢谢
JH
答案 0 :(得分:3)
我使用以下内容:
library(rvest)
library(dplyr)
library(tidyr)
pg <- read_html("http://www.lkcr.cz/seznam-lekaru-426.html")
obor <- html_nodes(pg, "select[name='filterObor'] > option")
obor_df <- data_frame(
value=xml_attr(obor, "value"),
option=xml_text(obor)
)
glimpse(obor_df)
## Observations: 115
## Variables: 2
## $ value <chr> "", "16", "107", "17", "1", "19", "20", "21", "22", "29...
## $ option <chr> "", "alergologie a klinická imunologie", "algeziologie"...
okres <- html_nodes(pg, "select[name='filterOkresId'] > option")
okres_df <- data_frame(
value=xml_attr(okres, "value"),
option=xml_text(okres)
)
glimpse(okres_df)
## Observations: 78
## Variables: 2
## $ value <chr> "", "3201", "3202", "3701", "3702", "3703", "3801", "37...
## $ option <chr> "", "Benešov", "Beroun", "Blansko", "Brno-město", "Brno...
以防万一字段顺序发生变化(加上熟悉使用CSS选择器和XPath选择器定位节点的好处)。
你仍然需要遍历每一对(你可以使用嵌套的purrr::map
调用进行迭代;我个人建议不要使用expand.grid
或tidyr::complete
。< / p>
但是...
由于网站在提交之前使用javacript进行一些数据处理,因此您在使用rvest
提交表单时会遇到问题。
您应该使用Chrome并打开开发人员工具,以查看实际按字段提交的内容,然后切换到使用httr::POST
。如果你遇到麻烦,你应该在SO上打开一个新问题。