Подтвердить что ты не робот

Извлечение ссылок с веб-страницы с использованием R

Два сообщения ниже - отличные примеры различных подходов к извлечению данных с веб-сайтов и их разбора в R.

Скремблирование html-таблиц в R-фреймы данных с использованием пакета XML

Как я могу использовать R (Rcurl/XML-пакеты?!), чтобы очистить эту веб-страницу

Я очень новичок в программировании, и я только начинаю с R, поэтому я надеюсь, что этот вопрос довольно простой, но, учитывая эти сообщения выше, я думаю, что это так.

Все, что я хочу сделать, это извлечь ссылки, соответствующие заданному шаблону. Я чувствую, что, возможно, я мог бы использовать RCurl для чтения на веб-страницах и извлечь их методом грубой силы, используя строковые выражения. Тем не менее, если веб-страница достаточно хорошо сформирована, как мне это сделать, используя пакет XML.

Как я узнаю больше, мне нравится "смотреть" на данные, когда я работаю над проблемой. Проблема в том, что некоторые из этих подходов генерируют списки списков списков и т.д., Поэтому для кого-то, кто является новым (например, я), трудно пройти туда, куда мне нужно идти.

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

4b9b3361

Ответ 1

В документации для htmlTreeParse показан один метод. Здесь другое:

> url <- "http://stackoverflow.com/questions/3746256/extract-links-from-webpage-using-r"
> doc <- htmlParse(url)
> links <- xpathSApply(doc, "//a/@href")
> free(doc)

(Вы можете отбросить атрибут "href" из возвращенных ссылок, передав "ссылки" через "as.vector".)

Мой предыдущий ответ:

Один из подходов состоит в использовании пакета Hadley Wickham stringr, который вы можете установить с помощью install.packages( "stringr", dep = TRUE).

> url <- "http://stackoverflow.com/questions/3746256/extract-links-from-webpage-using-r"
> html <- paste(readLines(url), collapse="\n")
> library(stringr)
> matched <- str_match_all(html, "<a href=\"(.*?)\"")

(Я думаю, некоторые люди могут не одобрять использование regexp здесь.)

matched - это список матриц, по одному на входную строку в векторе html, так как он имеет длину один здесь, и имеет только один элемент. Матчи первой группы захвата находятся в столбце 2 этой матрицы (и, вообще говоря, i-я группа появится в столбце (i + 1)).

> links <- matched[[1]][, 2]
> head(links)
[1] "/users/login?returnurl=%2fquestions%2f3746256%2fextract-links-from-webpage-using-r"
[2] "http://careers.stackoverflow.com"                                                  
[3] "http://meta.stackoverflow.com"                                                     
[4] "/about"                                                                            
[5] "/faq"                                                                              
[6] "/"

Ответ 2

Еще проще с rvest:

library(xml2)
library(rvest)

URL <- "http://stackoverflow.com/questions/3746256/extract-links-from-webpage-using-r"

pg <- read_html(URL)

head(html_attr(html_nodes(pg, "a"), "href"))

## [1] "//stackoverflow.com"                                                                                                                                          
## [2] "http://chat.stackoverflow.com"                                                                                                                                
## [3] "//stackoverflow.com"                                                                                                                                          
## [4] "http://meta.stackoverflow.com"                                                                                                                                
## [5] "//careers.stackoverflow.com?utm_source=stackoverflow.com&utm_medium=site-ui&utm_campaign=multicollider"                                                       
## [6] "https://stackoverflow.com/users/signup?ssrc=site_switcher&returnurl=http%3a%2f%2fstackoverflow.com%2fquestions%2f3746256%2fextract-links-from-webpage-using-r"

Ответ 3

Что означает "а" в ответе HRBMSTR?

Ответ 4

В iMacros wiki есть хорошая глава в веб-скребок. Мабе, которая дает вам некоторые идеи.