Настройка файлов cookie / отправка форм с помощью rvest / httr в R: проблемы с настройкой локального хранилища для веб-парсинга homedepot.com

Я настраиваю сценарий R для очистки данных с homedepot.com. Все идет нормально, за исключением того, что я хотел бы очистить уровни запасов для продуктов, что требует настройки местного магазина. Я пробовал несколько способов сделать это с помощью rvest, но безуспешно. Как я могу настроить местный магазин на homedepot.com? Я нашел эти связанные вопросы, которые не привели меня к решению: (язык R) Как сделать клик по веб-странице с помощью rvest или rcurl

Отправить форму без кнопки отправки в rvest

Как правильно установить файлы cookie для получения содержимого URL с помощью httr

Дополнительная информация: - код местоположения магазина, похоже, хранится в файле cookie под названием THD-LOC-STORE с 4-значным идентификатором магазина. Мне не удалось установить этот файл cookie:

library("rvest")
library("httr")
# try to set cookie in site with store ID:
session <- html_session("http://www.homedepot.com", set_cookies('THD-LOC-STORE'='2679'))
# if this worked, it would show the store name instead of "Select a Store":
storefinder <- session %>% read_html() %>% html_nodes(".headerStoreFinder") %>% html_text() %>% gsub("\\t","",.)
storefinder
cookies(session)

Я также думал об использовании submit_form() в rvest, но кнопки для выбора магазина управляются javascript, и нет кнопок ОТПРАВИТЬ для выбора.


person Scott    schedule 08.04.2016    source источник
comment
Очистка домашнего депо является нарушением их условий и положений, и у них есть обширный файл robots.txt, который - благодаря LinkedIn и еще нескольким случаям в 2016/7 году - практически является официальным техническим контролем, обход которого нарушает CFAA.   -  person hrbrmstr    schedule 23.12.2017


Ответы (1)


Что касается вашего возможного варианта «Я тоже думал об использовании submit_form () в rvest, но кнопки для выбора магазина запускаются javascript, и нет кнопок SUBMIT для выбора», я отправил ответ на вопрос «Форма отправки без кнопки отправки в rvest ", которая может предоставить это решение для вашего.

Короче говоря, вы можете вставить кнопку отправки в свою версию кода, а затем отправить ее. Подробная информация о том, как это сделать, находится в связанной публикации.

person Tripartio    schedule 15.07.2016
comment
Спасибо за ответ. Моя проблема на самом деле заключалась в том, что rvest загружает страницу до запуска любого javascript, поэтому я переключился на использование casperjs для загрузки загруженной страницы, а затем очистил ее. Однако ваш метод может оказаться полезным в будущем. - person Scott; 18.07.2016
comment
Не могли бы вы опубликовать решение, которое сработало для вас, как ответ на ваш собственный вопрос, а затем принять свой ответ как принятый ответ? Это не только нормально для Stack Overflow, но и рекомендуется, чтобы вы могли поделиться своими знаниями с другими. - person Tripartio; 18.07.2016