session_submit 来自 rvest 不 return table
session_submit from rvest does not return table
我正在尝试网络抓取 table,它仅在通过 rvest 填写表格后出现。但是,我只是无法找到 table 并且我什至不确定是否真的生产了 talbe。有问题的网站是 https://arztsuchehessen.de/,我希望将下拉菜单“Fachrichtung/Schwerpunkt”设置为“Psychologischer Psychotherapeut”,将 Psychotherapie 设置为“Psychotherapie für Erwachsene”。 table 仅在提交表单时出现(“Suchen”)。通过 SelectorGadget,我发现 table 被称为“.ergebnisliste”,但这并没有 return 任何东西。
session_arzt <- session("https://arztsuchehessen.de/")
form <- session_arzt%>% html_node("form") %>% html_form()
filled_form <- html_form_set(form,
'fachrichtung' = "44",
'fachrichtung_psycho' = "469")
submitted_form <- session_submit(session_arzt, arzt_form_set)
## Submitting with 'action[SucheStarten]'
table <- submitted_form %>% html_elements(".ergebnisliste")
table
## {xml_nodeset (0)}
非常感谢你的帮助!
看来您必须设置正确的 headers,尤其是 Cookie
。使用 curl
获取
library(curl)
#> Using libcurl 7.74.0 with OpenSSL/1.1.1j
library(rvest)
link <- "https://arztsuchehessen.de/arztsuche/arztsuche.php?page=suche&fachrichtung=44&haus_facharzt=egal&fachrichtung_psycho=469&plz=--alle--&ort=--alle--&kreis=--alle--&strasse=--alle--&action%5BSucheStarten%5D=&name=--alle--&vorname=--alle--&geschlecht=egal&status=--alle--&genehmigung=--alle--&zusatzbezeichnung=--alle--&testungaufSARSCoV2=--alle--&fremdsprache=--alle--&sz_von_sel=&sz_bis_sel=&rpp=500"
h <- new_handle()
handle_setheaders(h,
'User-Agent' = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0',
'Accept' = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Language' = 'en-GB,pl;q=0.5',
'Accept-Encoding' = 'gzip, deflate, br',
'DNT' = '1',
'Connection' = 'keep-alive',
'Cookie' = 'PHPSESSID=ucgdqn8j3nvelh43qg80k4r7bb',
'Upgrade-Insecure-Requests' = '1',
'Sec-Fetch-Dest' = 'document',
'Sec-Fetch-Mode' = 'navigate',
'Sec-Fetch-Site' = 'none',
'Sec-Fetch-User' = '?1',
'Sec-GPC' = '1',
'TE' = 'trailers')
curl_fetch_disk(link, path = "/home/sapi/projekty/test/a.html", handle = h)
#> $url
#> [1] "https://arztsuchehessen.de/arztsuche/arztsuche.php?page=suche&fachrichtung=44&haus_facharzt=egal&fachrichtung_psycho=469&plz=--alle--&ort=--alle--&kreis=--alle--&strasse=--alle--&action%5BSucheStarten%5D=&name=--alle--&vorname=--alle--&geschlecht=egal&status=--alle--&genehmigung=--alle--&zusatzbezeichnung=--alle--&testungaufSARSCoV2=--alle--&fremdsprache=--alle--&sz_von_sel=&sz_bis_sel=&rpp=500"
#>
#> $status_code
#> [1] 200
#>
#> $type
#> [1] "text/html; charset=UTF-8"
#>
#> $headers
#> [1] 48 54 54 50 2f 32 20 32 30 30 20 0d 0a 63 61 63 68 65 2d 63 6f 6e 74 72 6f
#> [26] 6c 3a 20 6e 6f 2d 73 74 6f 72 65 2c 20 6e 6f 2d 63 61 63 68 65 2c 20 6d 75
#> [51] 73 74 2d 72 65 76 61 6c 69 64 61 74 65 0d 0a 70 72 61 67 6d 61 3a 20 6e 6f
#> [76] 2d 63 61 63 68 65 0d 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78
#> [101] 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 0d 0a 65 78
#> [126] 70 69 72 65 73 3a 20 54 68 75 2c 20 31 39 20 4e 6f 76 20 31 39 38 31 20 30
#> [151] 38 3a 35 32 3a 30 30 20 47 4d 54 0d 0a 73 65 72 76 65 72 3a 20 4d 69 63 72
#> [176] 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 78 2d 70 6f 77 65 72 65 64
#> [201] 2d 62 79 3a 20 50 48 50 2f 37 2e 32 2e 31 33 0d 0a 73 74 72 69 63 74 2d 74
#> [226] 72 61 6e 73 70 6f 72 74 2d 73 65 63 75 72 69 74 79 3a 20 6d 61 78 2d 61 67
#> [251] 65 3d 33 31 35 33 36 30 30 30 0d 0a 64 61 74 65 3a 20 53 75 6e 2c 20 32 33
#> [276] 20 4a 61 6e 20 32 30 32 32 20 32 31 3a 32 35 3a 34 35 20 47 4d 54 0d 0a 0d
#> [301] 0a
#>
#> $modified
#> [1] NA
#>
#> $times
#> redirect namelookup connect pretransfer starttransfer
#> 0.000000 0.021782 0.058695 0.162655 1.098154
#> total
#> 33.518465
#>
#> $content
#> [1] "/home/sapi/projekty/test/a.html"
t <- read_html("/home/sapi/projekty/test/a.html")
html_elements(
html_elements(
html_elements(t, "table.ergebnisliste"), "tr"
), "td"
)
#> {xml_nodeset (1500)}
#> [1] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [2] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [3] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [4] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [5] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [6] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [7] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [8] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [9] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [10] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [11] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [12] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [13] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [14] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [15] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [16] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [17] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [18] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [19] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [20] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> ...
由 reprex package (v2.0.1)
于 2022-01-23 创建
我正在尝试网络抓取 table,它仅在通过 rvest 填写表格后出现。但是,我只是无法找到 table 并且我什至不确定是否真的生产了 talbe。有问题的网站是 https://arztsuchehessen.de/,我希望将下拉菜单“Fachrichtung/Schwerpunkt”设置为“Psychologischer Psychotherapeut”,将 Psychotherapie 设置为“Psychotherapie für Erwachsene”。 table 仅在提交表单时出现(“Suchen”)。通过 SelectorGadget,我发现 table 被称为“.ergebnisliste”,但这并没有 return 任何东西。
session_arzt <- session("https://arztsuchehessen.de/")
form <- session_arzt%>% html_node("form") %>% html_form()
filled_form <- html_form_set(form,
'fachrichtung' = "44",
'fachrichtung_psycho' = "469")
submitted_form <- session_submit(session_arzt, arzt_form_set)
## Submitting with 'action[SucheStarten]'
table <- submitted_form %>% html_elements(".ergebnisliste")
table
## {xml_nodeset (0)}
非常感谢你的帮助!
看来您必须设置正确的 headers,尤其是 Cookie
。使用 curl
获取
library(curl)
#> Using libcurl 7.74.0 with OpenSSL/1.1.1j
library(rvest)
link <- "https://arztsuchehessen.de/arztsuche/arztsuche.php?page=suche&fachrichtung=44&haus_facharzt=egal&fachrichtung_psycho=469&plz=--alle--&ort=--alle--&kreis=--alle--&strasse=--alle--&action%5BSucheStarten%5D=&name=--alle--&vorname=--alle--&geschlecht=egal&status=--alle--&genehmigung=--alle--&zusatzbezeichnung=--alle--&testungaufSARSCoV2=--alle--&fremdsprache=--alle--&sz_von_sel=&sz_bis_sel=&rpp=500"
h <- new_handle()
handle_setheaders(h,
'User-Agent' = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0',
'Accept' = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Language' = 'en-GB,pl;q=0.5',
'Accept-Encoding' = 'gzip, deflate, br',
'DNT' = '1',
'Connection' = 'keep-alive',
'Cookie' = 'PHPSESSID=ucgdqn8j3nvelh43qg80k4r7bb',
'Upgrade-Insecure-Requests' = '1',
'Sec-Fetch-Dest' = 'document',
'Sec-Fetch-Mode' = 'navigate',
'Sec-Fetch-Site' = 'none',
'Sec-Fetch-User' = '?1',
'Sec-GPC' = '1',
'TE' = 'trailers')
curl_fetch_disk(link, path = "/home/sapi/projekty/test/a.html", handle = h)
#> $url
#> [1] "https://arztsuchehessen.de/arztsuche/arztsuche.php?page=suche&fachrichtung=44&haus_facharzt=egal&fachrichtung_psycho=469&plz=--alle--&ort=--alle--&kreis=--alle--&strasse=--alle--&action%5BSucheStarten%5D=&name=--alle--&vorname=--alle--&geschlecht=egal&status=--alle--&genehmigung=--alle--&zusatzbezeichnung=--alle--&testungaufSARSCoV2=--alle--&fremdsprache=--alle--&sz_von_sel=&sz_bis_sel=&rpp=500"
#>
#> $status_code
#> [1] 200
#>
#> $type
#> [1] "text/html; charset=UTF-8"
#>
#> $headers
#> [1] 48 54 54 50 2f 32 20 32 30 30 20 0d 0a 63 61 63 68 65 2d 63 6f 6e 74 72 6f
#> [26] 6c 3a 20 6e 6f 2d 73 74 6f 72 65 2c 20 6e 6f 2d 63 61 63 68 65 2c 20 6d 75
#> [51] 73 74 2d 72 65 76 61 6c 69 64 61 74 65 0d 0a 70 72 61 67 6d 61 3a 20 6e 6f
#> [76] 2d 63 61 63 68 65 0d 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78
#> [101] 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 0d 0a 65 78
#> [126] 70 69 72 65 73 3a 20 54 68 75 2c 20 31 39 20 4e 6f 76 20 31 39 38 31 20 30
#> [151] 38 3a 35 32 3a 30 30 20 47 4d 54 0d 0a 73 65 72 76 65 72 3a 20 4d 69 63 72
#> [176] 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 78 2d 70 6f 77 65 72 65 64
#> [201] 2d 62 79 3a 20 50 48 50 2f 37 2e 32 2e 31 33 0d 0a 73 74 72 69 63 74 2d 74
#> [226] 72 61 6e 73 70 6f 72 74 2d 73 65 63 75 72 69 74 79 3a 20 6d 61 78 2d 61 67
#> [251] 65 3d 33 31 35 33 36 30 30 30 0d 0a 64 61 74 65 3a 20 53 75 6e 2c 20 32 33
#> [276] 20 4a 61 6e 20 32 30 32 32 20 32 31 3a 32 35 3a 34 35 20 47 4d 54 0d 0a 0d
#> [301] 0a
#>
#> $modified
#> [1] NA
#>
#> $times
#> redirect namelookup connect pretransfer starttransfer
#> 0.000000 0.021782 0.058695 0.162655 1.098154
#> total
#> 33.518465
#>
#> $content
#> [1] "/home/sapi/projekty/test/a.html"
t <- read_html("/home/sapi/projekty/test/a.html")
html_elements(
html_elements(
html_elements(t, "table.ergebnisliste"), "tr"
), "td"
)
#> {xml_nodeset (1500)}
#> [1] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [2] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [3] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=23808&a ...
#> [4] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [5] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [6] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=28774&a ...
#> [7] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [8] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [9] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=35320&a ...
#> [10] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [11] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [12] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=55154&a ...
#> [13] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [14] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [15] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=48638&a ...
#> [16] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [17] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [18] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [19] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> [20] <td>\n <a href="arztsuche.php?page=karteikarte&arztID=37706&a ...
#> ...
由 reprex package (v2.0.1)
于 2022-01-23 创建