首页 > > > [R爬虫]rvest包深入学习
在中文网站上找到的关于利用rvest包爬虫的学习了一下,大同小异,于是来到Github找写包的人来进行学习,至此估计关于这个包的学习可以告一段落了。大神的网址如下:hadley/rvest.下面来做今天的学习笔记,具体代码直接复制的demo下面的代码,注释是自己加的。
代码1:
# Inspired by
# http://notesofdabbler.github.io/201408_hotelReview/scrapeTripAdvisor.html
library(rvest)
url <- "http://www.tripadvisor.com/Hotel_Review-g37209-d1762915-Reviews-JW_Marriott_Indianapolis-Indianapolis_Indiana.html"
reviews <- url %>%
read_html() %>%
html_nodes("#REVIEWS .innerBubble") #( %>% 叫做管道,居然如此灵活!)
id <- reviews %>%
html_node(".quote a") %>%
html_attr("id")
quote <- reviews %>%
html_node(".quote span") %>%
html_text()
rating <- reviews %>%
html_node(".rating .rating_s_fill") %>%
html_attr("alt") %>%
gsub(" of 5 stars", "", .) %>%
as.integer()
date <- reviews %>%
html_node(".rating .ratingDate") %>%
html_attr("title") %>%
strptime("%b %d, %Y") %>%
as.POSIXct()
review <- reviews %>%
html_node(".entry .partial_entry") %>%
html_text()
data.frame(id, quote, rating, date, review, stringsAsFactors = FALSE) %>% View()
#View可以生成一个在R中可以看见的框的视窗代码2:
# Scrape miles from united site
library(rvest)
#模拟浏览器进行浏览
united <- html_session("http://www.united.com/")
#设置账号密码信息
login <- united %>%
html_node("form[name=LoginForm]") %>%
html_form() %>%
set_values(
MpNumber = "GY797363",
Password = password
)
#提交账号密码信息
logged_in <- united %>% submit_form(login)
#在登录界面中进入View account链接的某个节点,读取其中的数字
logged_in %>%
follow_link("View account") %>%
html_node("#ctl00_ContentInfo_AccountSummary_spanEliteMilesNew") %>%
html_text() %>%
readr::parse_number()
#这个案例没有给密码(password),所以是实现不了的。但是它提出了如果有的数据需要登录才
#能访问,这样的话就可以在R中完成登录的手续代码3:
# Inspired by https://github.com/notesofdabbler
library(rvest)
page <- read_html("http://www.zillow.com/homes/for_sale/Greenwood-IN/fsba,fsbo,fore,cmsn_lt/house_type/52333_rid/39.638414,-86.011362,39.550714,-86.179419_rect/12_zm/0_mmm/")
houses <- page %>%
html_nodes(".photo-cards li article")
z_id <- houses %>% html_attr("id")
address <- houses %>%
html_node(".zsg-photo-card-address") %>%
html_text()
price <- houses %>%
html_node(".zsg-photo-card-price") %>%
html_text() %>%
readr::parse_number() #读取能够读的第一个连续数字
params <- houses %>%
html_node(".zsg-photo-card-info") %>%
html_text() %>%
strsplit("\u00b7")
beds <- params %>% purrr::map_chr(1) %>% readr::parse_number()
baths <- params %>% purrr::map_chr(2) %>% readr::parse_number()
house_area <- params %>% purrr::map_chr(3) %>% readr::parse_number()
#map_chr(n)的作用是对所有字符都采用提取第n个的方法原文作者:;如有侵权,请联系管理员删除。