#r #xml
#r #xml
Вопрос:
Я пытаюсь импортировать данные с этого веб-сайта, но это просто не работает. Это простая HTML-таблица, и поэтому она должна быть доступна readHTMLTable
функции в XML. Пожалуйста, сообщите.
require(XML)
url = 'https://www.archives.gov/federal-register/electoral-college/allocation.html'
table = readHTMLTable(url,header = T,stringsAsFactors=F)
Ответ №1:
Вот решение с использованием rvest
пакета
library(tidyverse)
library(rvest)
read_html("https://www.archives.gov/federal-register/electoral-college/allocation.html") %>% # read the html page
html_nodes("table") %>% # extract nodes which contain a table
.[5] %>% # select the node which contains the relevant table
html_table(trim = T) # extract the table
Комментарии:
1. Спасибо за помощь. Другой пакет работал для исходного плаката, но по какой-то причине выдавал ошибку на моем компьютере.
Ответ №2:
Вы можете сделать следующее
library(XML)
library(RCurl)
# Read HTML library
URL <- "https://www.archives.gov/federal-register/electoral-college/allocation.html"
lst <- readHTMLTable(getURL(URL))
# Remove NULL elements in lst
lst <- Filter(Negate(is.null), lst)
При проверке мы видим, что основной таблицей является элемент 4 в lst
df <- lst[[4]]
df
# State Number of Electoral Votes
#1 Alabama 9
#2 Alaska 3
#3 Arizona 11
#4 Arkansas 6
#5 California 55
#6 Colorado 9
#7 Connecticut 7
#8 Delaware 3
#9 District of Columbia 3
#10 Florida 29
#11 Georgia 16
#12 Hawaii 4
#13 Idaho 4
#14 Illinois 20
#15 Indiana 11
#16 Iowa 6
#17 Kansas 6
#18 Kentucky 8
#19 Louisiana 8
#20 Maine 4
#21 Maryland 10
#22 Massachusetts 11
#23 Michigan 16
#24 Minnesota 10
#25 Mississippi 6
#26 Missouri 10
#27 Montana 3
#28 Nebraska 5
#29 Nevada 6
#30 New Hampshire 4
#31 New Jersey 14
#32 New Mexico 5
#33 New York 29
#34 North Carolina 15
#35 North Dakota 3
#36 Ohio 18
#37 Oklahoma 7
#38 Oregon 7
#39 Pennsylvania 20
#40 Rhode Island 4
#41 South Carolina 9
#42 South Dakota 3
#43 Tennessee 11
#44 Texas 38
#45 Utah 6
#46 Vermont 3
#47 Virginia 13
#48 Washington 12
#49 West Virginia 5
#50 Wisconsin 10
#51 Wyoming 3
Причина, по которой ваш подход не работает, заключается в том, что url()
который вызывается при использовании readHTMLTable
с URL-адресом, не может загружаться с https. Поэтому сначала вам нужно использовать RCurl
для загрузки файла.
Комментарии:
1. Я попытался запустить код на своем компьютере, и я получил это: Ошибка в функции (тип, msg, asError = TRUE) : ошибка: 14077410: Процедуры SSL: SSL23_GET_SERVER_HELLO: ошибка подтверждения связи sslv3. У меня не включен брандмауэр. Есть ли какая-то настройка, которую мне нужно включить?
2. @ZhaochenHe Понятия не имею; ваша ошибка невоспроизводима. Вы используете более старую
RCurl
версию? Приведенный выше код работает дляRCurl_1.95-4.11
иXML_3.98-1.16
.