I have the following html
snipped:
<div class="main--content">
<p> <strong>Ihre Aufgaben:</strong> </p>
<ul>
<li>Zentraler Ansprechpartner für den gesamten Mitarbeiterlebenszyklus
</li>
<li>Partnerschaft mit den Geschäftsbereichen, um innovative Lösungen für die Mitarbeitererfahrung zu implementieren und zu entwickeln
</li>
<li>Beratung zur Nachfolgeregelung, Analyse der Talentpyramide und Aufbauempfehlungen
</li>
<li>Unterstützung der Führungseffektivität durch die Bereitstellung von Analyseberichten und die Nutzung der aktuellen HR-Strategie
</li> <li>Evaluierung von HR-Richtlinien und -Prozessen
</li>
<li>Erstellen und Entwickeln neuer Aktivitäten zur Verbesserung des Mitarbeiterengagements
</li>
<li>Sicherstellen, dass der HRBP-Bereich eng mit den Geschäfts- und HR-Stakeholdern verbunden ist
</li>
<li>Tätigkeit als Moderator und innovatives Teammitglied bei der Umsetzung globaler HR-Projekte
</li>
</ul>
<p>Ihr Profil:</p>
<ul>
<li>Kaufmännische Ausbildung mit Weiterbildung als Eidg. Dipl. HR-Fachfrau/mann
</li>
<li>Mehrjährige Berufserfahrung in einer ähnlichen Funktion
</li>
<li>Effektive Präsentations- und Kommunikationsfähigkeiten
</li>
</ul>
</div>
I want to extract the title, in this case whatever is written in the p
tag and the corresponding list elements.
I can get the p
and ul
elements from this, but I am not able to dynamically give the structure.
I work with rvest
Following chunk returns the list elements:
tmp %>% rvest::html_elements("ul > li")
[1] <li>Zentraler Ansprechpartner für den gesamten Mitarbeiterlebenszyklus</li>
[2] <li>Partnerschaft mit den Geschäftsbereichen, um innovative Lösungen für die Mitarbeitererfahrung zu implementieren und zu entwickeln</li>
And the titles:
tmp %>% rvest::html_elements("p")
[6] <p> <strong>Ihre Aufgaben:</strong> </p>
[7] <p>Ihr Profil:</p>
Is there a way to extract the list to a dataframe or list?
library(rvest)
library(purrr)
doc <- minimal_html('<div class="main--content">
<p> <strong>Ihre Aufgaben:</strong> </p>
<ul>
<li>Zentraler Ansprechpartner für den gesamten Mitarbeiterlebenszyklus
</li>
<li>Partnerschaft mit den Geschäftsbereichen, um innovative Lösungen für die Mitarbeitererfahrung zu implementieren und zu entwickeln
</li>
<li>Beratung zur Nachfolgeregelung, Analyse der Talentpyramide und Aufbauempfehlungen
</li>
<li>Unterstützung der Führungseffektivität durch die Bereitstellung von Analyseberichten und die Nutzung der aktuellen HR-Strategie
</li> <li>Evaluierung von HR-Richtlinien und -Prozessen
</li>
<li>Erstellen und Entwickeln neuer Aktivitäten zur Verbesserung des Mitarbeiterengagements
</li>
<li>Sicherstellen, dass der HRBP-Bereich eng mit den Geschäfts- und HR-Stakeholdern verbunden ist
</li>
<li>Tätigkeit als Moderator und innovatives Teammitglied bei der Umsetzung globaler HR-Projekte
</li>
</ul>
<p>Ihr Profil:</p>
<ul>
<li>Kaufmännische Ausbildung mit Weiterbildung als Eidg. Dipl. HR-Fachfrau/mann
</li>
<li>Mehrjährige Berufserfahrung in einer ähnlichen Funktion
</li>
<li>Effektive Präsentations- und Kommunikationsfähigkeiten
</li>
</ul>
</div>')
## get all p and ul elements
p_and_ul <- doc %>% html_elements("p,ul")
## which of these elements are p elements?
is_p <- p_and_ul %>% html_element("li") %>% is.na()
## for each ul element get the li children
all_li <- map(p_and_ul[!is_p], ~ html_elements(.x, "li"))
## put all results togteher
res <- vector("list", length(p_and_ul))
res[is_p] <- map_chr(p_and_ul[is_p], as.character)
res[!is_p] <- map(all_li, as.character)
unlist(res)
# [1] "<p> <strong>Ihre Aufgaben:</strong> </p>"
# [2] "<li>Zentraler Ansprechpartner für den gesamten Mitarbeiterlebenszyklus\n </li>"
# [3] "<li>Partnerschaft mit den Geschäftsbereichen, um innovative Lösungen für die Mitarbeitererfahrung zu implementieren und zu entwickeln\n </li>"
# [4] "<li>Beratung zur Nachfolgeregelung, Analyse der Talentpyramide und Aufbauempfehlungen\n </li>"
# [5] "<li>Unterstützung der Führungseffektivität durch die Bereitstellung von Analyseberichten und die Nutzung der aktuellen HR-Strategie\n </li>"
# [6] "<li>Evaluierung von HR-Richtlinien und -Prozessen\n </li>"
# [7] "<li>Erstellen und Entwickeln neuer Aktivitäten zur Verbesserung des Mitarbeiterengagements\n </li>"
# [8] "<li>Sicherstellen, dass der HRBP-Bereich eng mit den Geschäfts- und HR-Stakeholdern verbunden ist\n </li>"
# [9] "<li>Tätigkeit als Moderator und innovatives Teammitglied bei der Umsetzung globaler HR-Projekte\n </li>"
# [10] "<p>Ihr Profil:</p>"
# [11] "<li>Kaufmännische Ausbildung mit Weiterbildung als Eidg. Dipl. HR-Fachfrau/mann\n </li>"
# [12] "<li>Mehrjährige Berufserfahrung in einer ähnlichen Funktion\n </li>"
# [13] "<li>Effektive Präsentations- und Kommunikationsfähigkeiten\n </li>"