2015-02-15 3 views
0

Для моего первого упражнения в webscraping в R, я пытаюсь выяснить, как искать продаваемые оперные билеты, чтобы в итоге найти лучшее предложение. Я хотел бы сделать две вещи:R Webscraping с динамическими таблицами

  1. Создать таблицу категорий и цен, чтобы иметь возможность искать лучшие цены в любой категории
  2. Сохранить ссылку на HTTP-адрес лучшей сделки (цена на одну категорию).

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

library(rvest) 
rmSpace <- function(x){ 
     x<-gsub("\t","",x) 
    x<-gsub("\n","",x) 
} 

page <- url %>% html() 

date <- page %>% 
    html_nodes(".date-tabdyn") %>% 
    html_text() 
date <- date[-1] 
date <-rmSpace(date) 

category <- page %>% 
    html_nodes(".td_description .bold") %>% 
    html_text() 
category<-rmSpace(category) 

description <- page %>% 
    html_nodes(".td_description") %>% 
    html_text() 
description <- description[-1] 
description <- rmSpace(description) 

price <- page %>% 
    html_nodes(".valeur_revente .montant-numeric") %>% 
    html_text() 

price_normal <- page %>% 
    html_nodes(".valeur_faciale .montant-numeric") %>% 
    html_text() 

links <- page %>% html_nodes(".button_eae9e5") %>% html_attr("onclick") 
links <- substr(links,31,nchar(links)-2) 
tab <- cbind(category, price, price_normal, date, description, links) 

UPDATE: Я был в состоянии получить хороший стол с rvest, но я не понял, как решить предел 15 вида.

UPDATE 2: Кажется, есть запрос POST, который возвращает json-файл. Я предполагаю, что могу использовать это, чтобы помочь вернуть большую таблицу, но я теряюсь в том, как это сделать.

ответ

4

Вы должны изучить RSelenium. Вы можете получить подробную информацию о Selenium от: http://docs.seleniumhq.org/.

По существу, Selenium создает веб-браузер, который отображает фактическую веб-страницу, и вы можете очистить сгенерированный HTML-код. В зависимости от используемого браузера вы сможете обрабатывать всевозможные веселые веб-протоколы. Один простой в использовании веб-браузер в R - phantomJS (http://phantomjs.org/).

Рассмотрите приведенный ниже код. Сначала я указываю на исполняемый файл phantomJS (и могу указать собственный прокси!), Я создаю драйвер и открываю сеанс. PhanomJS отчасти отличается тем, что он «безголовый», поэтому вы не увидите никаких дополнительных окон. Затем вы поручаете вашему фантомному веб-браузеру перейти к вашему URL-адресу и захватите источник.

pJS = phantom(pjs_cmd="C:/phantomjs2/bin/phantomjs.exe",extras="--proxy=localhost:3128") 
remDr = remoteDriver(browserName = 'phantomjs') 
remDr$open() 

remDr$navigate(url) 
soup = remDr$getPageSource() 

В общем, для меня это устранило 90% проблем с доступом в Интернет, как тот, который вы описываете.

+0

Спасибо. Из любопытства, Selenium единственный способ? Я начал читать о Selenium, но я еще не успел это сделать. – Drew75

+0

@ Drew75 Могут быть другие способы, но, по моему опыту, Селен является самым простым. – Mark

Смежные вопросы