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&amp;arztID=23808&a ...
#>  [2] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=23808&a ...
#>  [3] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=23808&a ...
#>  [4] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=28774&a ...
#>  [5] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=28774&a ...
#>  [6] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=28774&a ...
#>  [7] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=35320&a ...
#>  [8] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=35320&a ...
#>  [9] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=35320&a ...
#> [10] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=55154&a ...
#> [11] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=55154&a ...
#> [12] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=55154&a ...
#> [13] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=48638&a ...
#> [14] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=48638&a ...
#> [15] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=48638&a ...
#> [16] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=37706&a ...
#> [17] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=37706&a ...
#> [18] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=37706&a ...
#> [19] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=37706&a ...
#> [20] <td>\n        <a href="arztsuche.php?page=karteikarte&amp;arztID=37706&a ...
#> ...

reprex package (v2.0.1)

于 2022-01-23 创建