ITPub博客

首页 > > > [R爬虫]rvest包深入学习

[R爬虫]rvest包深入学习

作者:浪花小雨滴 时间:2017-11-02 13:22:32 0 删除 编辑

在中文网站上找到的关于利用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个的方法

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39850