2016-04-08 7 views
0

Я создаю скрипт R для очистки данных с homedepot.com. Все идет хорошо, за исключением того, что я хотел бы очистить уровни запасов для продуктов, что требует установки локального магазина. Я пробовал несколько способов сделать это, используя rvest без успеха. Как установить локальный магазин на homedepot.com? Я нашел эти вопросы, связанные, которые не привели меня к решению: (R language) How to make a click on webpage using rvest or rcurlНастройка файлов cookie/отправки форм с rvest/httr в R: проблемы с настройкой локального хранилища для веб-скрепок homedepot.com

Submit form with no submit button in rvest

How to properly set cookies to get URL content using httr

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

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, но кнопки для выбора магазина не управляют яваскриптом и там нет ВВЕСТИ кнопки для выбора.

+0

Скребковый дом является нарушением их T & C, и у них есть обширный файл robots.txt, который благодаря LinkedIn и еще нескольким случаям в 2016/7 году - почти официальный технический контроль, который в обход нарушает CFAA. – hrbrmstr

ответ

2

Что касается вашей возможной опции «Я также подумал об использовании функции submit_form() в rvest, но кнопки для выбора хранилища управляются javascript, и нет кнопок SUBMIT для выбора», я отправил ответ на вопрос «Submit form with no submit button in rvest «который может обеспечить это решение для вашего.

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

+0

Спасибо за ответ. Моя проблема действительно закончилась тем, что rvest загружает страницу перед запуском javascript, поэтому я переключился на использование casperjs, чтобы загрузить загруженную страницу, а затем очистить ее. Однако ваш метод может оказаться полезным в будущем. – Scott

+0

Не могли бы вы разместить решение, которое сработало для вас как ответ на ваш собственный вопрос, а затем принять ваш ответ в качестве принятого ответа? Это не только отлично работает в Stack Overflow, но это рекомендуется, чтобы вы могли поделиться своими знаниями с другими. – Tripartio