Веб-скрейпинг R по классам

У меня есть финансовое задание по сбору значения бета-версии для расчета, я новичок в R, я хотел бы получить значение бета-версии в Интернете с помощью пакета rvest или httr. Однако вывод символьный (0).

введите здесь описание изображения

xpath:
//*[@id="StkList"]/ul/li[48]

library(rvest)
library(dplyr)

sym <- "1212"
url.3 < paste("http://www.etnet.com.hk/www/eng/stocks/realtime/quote.php?code=",sym,sep="")

beta.value <- url.3 %>% read_html() %>% html_nodes(xpath = "//*[@id='StkList']/ul/li[48]")

output:
character(0)

desired output:
0.270

Я пробовал не использовать xpath, но html_nodes("div.value.highlight"), но тоже не работает. Кто-нибудь может помочь или посоветовать? Спасибо.


person Peter Chung    schedule 25.01.2018    source источник
comment
Кстати, я не мог видеть 0,27 на этой странице. Не могли бы вы дать мне знать, где это?   -  person amrrs    schedule 25.01.2018
comment
@amrrs Бета +0,270. извините за неудобства. ctrl+F и введите бета этой строки   -  person Peter Chung    schedule 25.01.2018
comment
На самом деле я не мог видеть бета-версию, не могли бы вы обновить скриншот?   -  person amrrs    schedule 25.01.2018
comment
@amrrs спасибо за ваш комментарий. я загрузил скриншот   -  person Peter Chung    schedule 25.01.2018
comment
Спасибо @Peter, но по какой-то причине я даже не мог увидеть это в таблице. Может быть, потому что я захожу из другой страны?   -  person amrrs    schedule 25.01.2018
comment
Что ты тогда увидел?   -  person Peter Chung    schedule 25.01.2018
comment
Я второй amrrs здесь. Я не могу найти ни 0,27, ни «бету».   -  person Ankur Sinha    schedule 25.01.2018
comment
Хорошо, перейдя по вашей ссылке, я нажал «Подробная цитата» и увидел значения. Однако ссылка не изменилась. Он остался прежним.   -  person Ankur Sinha    schedule 25.01.2018


Ответы (1)


Они проверяют реферера перед отображением страницы, поэтому вам нужно добавить несколько заголовков:

library(magrittr)
library(httr)
library(rvest)

httr::GET(
  url = "http://www.etnet.com.hk/www/eng/stocks/realtime/quote.php?code=1212", 
  httr::add_headers(
    Host = "www.etnet.com.hk",
    Referer = "http://www.etnet.com.hk/www/eng/stocks/realtime/quote.php?code=1212"
  )
) -> res

res <- content(res, encoding="UTF-8")

html_node(res, xpath=".//li[contains(., 'Beta')]/following-sibling::li[1]") %>% 
  html_text()
## [1] "+0.270"
person hrbrmstr    schedule 25.01.2018
comment
спасибо, но у меня есть вопросы по поводу xpath, он отличается от того, который я проверяю и копирую xpath, потому что я хочу использовать его для копирования числа Prev Close, но у меня ничего не получилось, не могли бы вы подсказать мне, как это сделать правильно? большое спасибо - person Peter Chung; 15.02.2018
comment
спасибо, мне понравилось html_node(res, xpath=.//td[contains(., 'Prev Close')]) %›% html_text() получил Prev Close11.380 - person Peter Chung; 15.02.2018