Попытка получить цену на продукты с помощью RCurl

Я удаляю цены на некоторые продукты с веб-сайта. В Python я использовал urllib2 без проблем, но когда я попытался использовать RCurl в R, я не смог загрузить исходный код.

Я должен вставить исходник с кодом продукта, тогда я поймаю цену. Путь продукта: http://www.americanas.com.br/produto/code_of_product< /а>.

На самом деле я не могу загрузить исходный код продукта с помощью RCurl. Когда я пытаюсь, например, получить URL('http://www.americanas.com.br/produto/111467594') возвращает "".

Я попытался использовать getURL('.../produtos/111467594') и смог загрузить исходный код, но таким образом я не могу получить цену. :(

Кто-нибудь знает, как я могу узнать цену на продукты?

Спасибо.

Ps.: Извините за мой плохой английский. :)


person Djongs    schedule 17.02.2013    source источник


Ответы (1)


Добро пожаловать в StackOverflow.

Мне трудно сказать, почему это не работает, не могли бы вы включить verbose=TRUE в getURL? Кроме того, я заметил, что на странице, на которую вы ссылаетесь, разные цены. Вы хотите все или только первое? Как насчет этого, чтобы получить «цену Por»:

library("stringr")

productwebpage<-readLines("http://www.americanas.com.br/produto/111467594")
pricerow<-productwebpage[grep("p class=\"sale price\"",productwebpage)] 
price<-str_extract_all(pricerow,"\\(?[0-9,.]+\\)?")[[1]]

Вы также можете заменить grep("p class=\"sale price\"",productwebpage) на grep("<p><span class=\"regular price\">",productwebpage) (чтобы получить «де-цену»/старую цену) или grep("<span class=\"p-v interest\">",productwebpage) (что даст вам цену «sem jouros»/оплату за месяц). В последнем примере вы получите сначала месяцы, а затем оплату, так что это будет:

> price
[1] "12"    "83,25"

Надеюсь, это должно сработать и для других продуктов (только что попробовал 5 и, похоже, сработало для всех из них).

person nadizan    schedule 17.02.2013
comment
@user2080573 user2080573 Если вы считаете, что я ответил на ваши вопросы, вы можете выбрать мой пост в качестве ответа, чтобы было ясно, что на эту тему был дан ответ. - person nadizan; 19.02.2013