Очистить страницу, когда URL не меняется с номером страницы - R - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу очистить все URL с этой страницы:

http://www.domainia.nl/QuarantaineList.aspx

Я могу очистить первую страницу, однако не могу изменить страницу, потому что онане в URL.Так как я могу изменить страницу со соскобом?Я искал RSelenium, но не смог заставить его работать.

Я запускаю следующий код, чтобы получить хотя бы первую страницу:

#Constructin the to scrape urls
baseURL <- "http://www.domainia.nl/quarantaine/"
date <- gsub("-", "/", Sys.Date())
URL <- paste0(baseURL, date)

#Scraping the page
page <- read_html(URL) %>% html_nodes("td") %>% html_text()
links <- str_subset(page, pattern = "^\r\n.*.nl$")
links <- gsub(pattern = "\r\n", "", links) %>% trimws

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

(слишком большой для комментария, и он также имеет столь же заметное изображение, но не является ответом как таковой)

Эмиль на месте, за исключением того, что это сайт asp.net/sharepoint-esque сдвоичные «представления состояний» и другие действительно ненормальные веб-практики, которые сделают практически невозможным просмотр всего лишь с помощью httr:

enter image description here

Когда вы используетеНа вкладке Network (опять же, как подсказывает Эмиль), вы также можете использовать curlconverter для автоматического создания httr VERB функций из запросов «Скопировано как cURL».

Для этого сайта - при условии, что это законно, чтобы очистить (у него нет robots.txt, и я не владею голландским языком и не видел очевидную ссылку "условия и положения") - вы можете использовать что-то вроде splashr или Selenium для навигации, нажатия и очистки, поскольку он действует как настоящий браузер.

0 голосов
/ 11 декабря 2018

Я посмотрел на сайте;он использует Javascript POST для обновления своего содержимого.Первоначально HTTP-POST предназначался для отправки информации на сервер, например, для отправки содержимого того, что кто-то ввел в форму.Таким образом, он часто включает информацию о странице, с которой вы приходите, а это означает, что вам, вероятно, понадобится больше информации, чем просто «страница n».

Если вы хотите получить другую страницу, как ваш браузер покажет вамВам необходимо отправить аналогичный запрос.Пакет httr включает в себя функцию POST, я думаю, вам стоит взглянуть на это.Для того, чтобы знать, что размещать, я думаю, что наиболее полезно захватить то, что делает ваш браузер, и скопировать это.В Chrome вы можете использовать inspect, вкладку Network для просмотра того, что отправлено и получено. Могу поспорить, что в других браузерах есть аналогичные инструменты.другой источник показал бы то же самое, они потеряли бы деньги.Поэтому я сомневаюсь, что так легко подражать, я думаю, что какая-то часть запроса каждый раз отличается, но должна быть точно правильной.Например, они могут создавать проверки, чтобы увидеть, была ли отрисована вся страница, а не отброшена, как вы.Поэтому я не удивлюсь, если они намеренно затруднят выполнение того, что вы пытаетесь сделать.

Что приводит меня к совершенно другому решению: спросите их!
Когда я попытался очистить веб-сайтс динамически генерируемым контентом я тоже боролся.Пока я еще немного не изучил веб-сайт и не увидел, что у них есть ссылка, по которой вы можете загрузить все содержимое в хорошем формате csv.
И для веб-сервера люди, пытающиеся очистить свой веб-сайт, часто неудобныОн также требует ресурсов от сервера, гораздо больше, чем кто-то, кто скачивает файл.
Вполне возможно, что они скажут вам «нет», но если они действительно не хотят, чтобы вы получали их данные, я уверен, что онизатруднили очистку.Возможно, вас просто забанят, если вы сделаете слишком много запросов с одного и того же IP-адреса, возможно, каким-то другим способом.
И вполне возможно, что они не хотят, чтобы их данные были в руках конкурента, но что они "Я дам его вам, если вы используете его только для определенной цели.

...