#r #web-scraping #rvest
#r #веб-очистка #rvest
Вопрос:
Я пытаюсь очистить веб-сайт объявлений о вакансиях с помощью rvest (https://www.stepstone.de/5/ergebnisliste.html?stf=freeTextamp;ns=1amp;qs=[]amp;companyID=0amp;cityID=0amp;sourceOfTheSearchField=homepagemex:generalamp;searchOrigin=Homepage_top-searchamp;ke=building information modeliingamp;ws=amp;ra=30).
Я хочу извлечь дату создания публикации вакансии (2020-12-07T02:13:28 01:00), которую можно найти здесь:
<time class="" datetime="2020-12-07T02:13:28 01:00" timeago-id="17">vor 1 Woche</time>
Однако мне удается узнать, сколько дней назад была создана публикация вакансии, например, vor 1 Woche (1 неделя назад). Мой код выглядит следующим образом:
url = "https://www.stepstone.de/5/ergebnisliste.html?stf=freeTextamp;ns=1amp;qs=[]amp;companyID=0amp;cityID=0amp;sourceOfTheSearchField=homepagemex:generalamp;searchOrigin=Homepage_top-searchamp;ke=building information modeliingamp;ws=amp;ra=30"
read_html(url) %>%
html_nodes('time') %>%
html_text()
Рад любой помощи! Спасибо!
Комментарии:
1. Эти атрибуты не существуют в необработанном html. Они добавляются динамически в вашем браузере из глубоко вложенной строки json на той же странице с использованием javascript. Было бы возможно получить временные метки, но для их извлечения потребовалось бы много синтаксического анализа. Возможно, вам лучше пройти по маршруту RSelenium здесь
Ответ №1:
Во-первых, «datetime» является атрибутом, поэтому вы захотите попробовать использовать html_attr или html_attrs.
Во-вторых, что более важно, я не вижу даты и времени ни в одном из ваших узлов (только класс). Вы уверены, что это атрибут на этом веб-сайте для всех временных узлов?
> library(rvest)
>
> url = "https://www.stepstone.de/5/ergebnisliste.html?stf=freeTextamp;ns=1amp;qs=[]amp;companyID=0amp;cityID=0amp;sourceOfTheSearchField=homepagemex:generalamp;searchOrigin=Homepage_top-searchamp;ke=building information modeliingamp;ws=amp;ra=30"
> test = read_html(url) %>%
html_nodes('time')
>
> test
{xml_nodeset (25)}
[1] <time class="">vor 1 Woche</time>
[2] <time class="">vor 1 Woche</time>
[3] <time class="">vor 2 Tagen</time>
[4] <time class="">vor 1 Woche</time>
[5] <time class="">vor 6 Tagen</time>
[6] <time class="">vor 12 Stunden</time>
[7] <time class="">vor 18 Stunden</time>
[8] <time class="">vor 23 Stunden</time>
[9] <time class="">vor 1 Woche</time>
[10] <time class="">vor 1 Tag</time>
[11] <time class="">vor 2 Tagen</time>
[12] <time class="">vor 1 Tag</time>
[13] <time class="">vor 6 Tagen</time>
[14] <time class="">vor 2 Tagen</time>
[15] <time class="">vor 2 Tagen</time>
[16] <time class="">vor 2 Tagen</time>
[17] <time class="">vor 2 Tagen</time>
[18] <time class="">vor 6 Tagen</time>
[19] <time class="">vor 1 Woche</time>
[20] <time class="">vor 1 Woche</time>