Одной из возможностей является использование пакета wayback
( GL ) ( GH ) , который поддерживает запросы к Интернет-архиву и чтение в HTMLсохраненных страниц ("сувениры").Вы можете исследовать немного больше терминологии abt web-архивирования (это немного загадочное IMO) через http://www.mementoweb.org/guide/quick-intro/ & https://mementoweb.org/guide/rfc/ в качестве начального ресурса.
library(wayback) # devtools::install_git(one of the superscript'ed links above)
library(rvest) # for reading the resulting HTML contents
library(tibble) # mostly for prettier printing of data frames
Существует несколько подходовможно взять.Это то, что я склонен делать во время криминалистического анализа онлайн-контента.YMMV.
Во-первых, мы получаем записанные сувениры (в основном, краткий список релевантного контента):
(rss <- get_mementos("http://www.dailyecho.co.uk/news/district/winchester/rss/"))
## # A tibble: 7 x 3
## link rel ts
## <chr> <chr> <dttm>
## 1 http://www.dailyecho.co.uk/news/district/winchester/rss/ original NA
## 2 http://web.archive.org/web/timemap/link/http://www.dailyecho.co… timemap NA
## 3 http://web.archive.org/web/http://www.dailyecho.co.uk/news/dist… timegate NA
## 4 http://web.archive.org/web/20090517035444/http://www.dailyecho.… first me… 2009-05-17 03:54:44
## 5 http://web.archive.org/web/20180712045741/http://www.dailyecho.… prev mem… 2018-07-12 04:57:41
## 6 http://web.archive.org/web/20180812213013/http://www.dailyecho.… memento 2018-08-12 21:30:13
## 7 http://web.archive.org/web/20180812213013/http://www.dailyecho.… last mem… 2018-08-12 21:30:13
Средство просмотра меню календаря в IA - это действительно «временная карта».Мне нравится работать с этим, так как это список на момент времени всех обходов.Это вторая ссылка выше, поэтому мы прочитаем ее:
(tm <- get_timemap(rss$link[2]))
## # A tibble: 45 x 5
## rel link type from datetime
## <chr> <chr> <chr> <chr> <chr>
## 1 original http://www.dailyecho.co.uk:80/news/d… NA NA NA
## 2 self http://web.archive.org/web/timemap/l… applicatio… Sun, 17 May … NA
## 3 timegate http://web.archive.org NA NA NA
## 4 first memento http://web.archive.org/web/200905170… NA NA Sun, 17 May 20…
## 5 memento http://web.archive.org/web/200908130… NA NA Thu, 13 Aug 20…
## 6 memento http://web.archive.org/web/200911121… NA NA Thu, 12 Nov 20…
## 7 memento http://web.archive.org/web/201001121… NA NA Tue, 12 Jan 20…
## 8 memento http://web.archive.org/web/201007121… NA NA Mon, 12 Jul 20…
## 9 memento http://web.archive.org/web/201011271… NA NA Sat, 27 Nov 20…
## 10 memento http://web.archive.org/web/201106290… NA NA Wed, 29 Jun 20…
## # ... with 35 more rows
Содержимое находится в сувенирах, и там должно быть столько сувениров, сколько вы видите в представлении календаря.В первом из них мы прочтем:
mem <- read_memento(tm$link)
# Ideally use writeLines(), now, to save this to disk with a good
# filename. Alternatively, stick it in a data frame with metadata
# and saveRDS() it. But, that's not a format others (outside R) can
# use so perhaps do the data frame thing and stream it out as ndjson
# with jsonlite::stream_out() and compress it during save or afterwards.
Затем преобразуем его в то, что мы можем использовать программно с xml2::read_xml()
или xml2::read_html()
(иногда RSS лучше анализировать как XML):
read_html(mem)
## {xml_document}
## <html>
## [1] <body><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Daily Ec ...
read_memento()
имеет параметр as
для автоматического разбора результата, но мне нравится хранить сувениры локально (как отмечено в комментариях), чтобы не злоупотреблять серверами IA (т.е. если мне когда-либо понадобится получитьопять данные, мне не нужно бить по их инфраструктуре).
Большое предостережение в том, что если вы попытаетесь получить слишком много ресурсов от ИА за короткий промежуток времени, вы будете временно забанены, так как они имеютмасштабируется, но это бесплатный сервис, и они (по праву) пытаются предотвратить злоупотребления.
Определенно сообщите о проблемах с пакетом (выберите ваше любимое сообщество по размещению исходного кода, чтобы сделать это, так как я буду работать с любым из них, но предпочитаю GitLab послеMicrosoft поглощение GitHub), если что-то неясно или вы чувствуете, может быть сделано лучшеЭто не популярный пакет, и у меня есть лишь время от времени необходимость в судебной экспертизе, поэтому он «работает для меня», но я с радостью постараюсь сделать его более удобным для пользователя (мне просто нужно знать болевые точки).