不写R包的分析师不是好全栈

十行代码看到AQI

    R

我错了, 我承认我是标题党, 怎么可能用十行代码完成全国三百个多个城市AQI的抓取, 清洗与可视化

我仔细数了数, 去掉注释, 一共是11行…

AQI是空气质量指数(Air Quality Index,简称AQI)是定量描述空气质量状况的无量纲指数.

对于最近的空气质量, 我无话可说, 只好先讲个段子(没有干货段子凑, 网侵删):

受朋友委托,大家帮个忙:北京人,女,26岁,未婚,1.68米,体重50公斤,英国海归。貌美,爱好健身。目前在一家世界500强做产品经理,工作稳定,年薪近90万。三环内有四套学区房,一套按揭,三套全款。 名下有一辆宝马7系,上班时开。父母均是国家领导干部。朋友和家人现在非常着急,想让介绍一个效果比较好的防霾口罩。

[手动债见]

咳咳, 回归正题, 在十一行代码之前, 先介绍下出场的两个包, 单library这些包就占掉了快20%的代码量.

rvest

rvest, 一个较新的数据抓取包,类似py的beautiful soup, 在不考虑cookie代理get/post等情况下, 比Rcurl与XML用起来方便, 但话说回来, 爬虫最大工作量也并不一定是写代码.

其中抓取用的是CSS selector的语法, 和Xpath略有区别,想快速学习的话可以去这里学下怎么选果冻

leafletCN

leafletCN 是一个基于leaflet包做的大中华扩展,
优势在于有细分到县级市级别的区划数据, 虽然没那么准, 但是也基本能用了~

这玩意连个文档都没有. 作者真懒.

好了, 以下是代码, 运行之后会出现一个以高德地图为底图, 可缩放可点击的结果

Windows用户可能需要运行注释中我标的内容~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# install.packages("rvest")
# install.packages("leafletCN")
# windows:
# Sys.setlocale("LC_CTYPE", "eng")
## GAME begin~
library(rvest)
library(leafletCN)
# Sys.setlocale("LC_CTYPE", "eng")
doc = read_html("http://www.pm25s.com/cn/rank/")
## http://flukeout.github.io/
cities = doc %>% html_nodes(".cityrank a") %>%
html_text()
# windows:
# cities = iconv(cities, "UTF-8", "UTF-8")
AQI = doc %>% html_nodes("span[class^='lv']") %>%
html_text() %>% .[c(F,F,T)] %>% as.numeric
dat = data.frame(city = cities, AQI = AQI)
geojsonMap(dat, "city",
popup = paste0(dat$city,":",dat$AQI),
palette = "Reds", legendTitle = "AQI")

亮点自寻, 欢迎点赞~

page PV:  ・  site PV:  ・  site UV: