這份作業希望能夠讓你熟悉 Web Scraping 的流程,這週的重點會著重在 JSON。
接續老師錄製的影片,請到 104 人力銀行,爬取「軟體工程」和「資料科學」兩種職業的搜尋結果,扣除面議的薪資不計,繪製圖表比較這 2 種職業的薪資差異,請自行思考適合的圖表類型與指標。
你的程式碼應該包含 3
個部分:爬資料、清理資料如薪資與年資等欄位、視覺化,有些流程可能需要借助你的主觀判斷,請盡量搭配文字適度解釋你處理資料的過程。另外,建議你爬好資料之後,可以自行創建並存取在
data/AS05/
資料夾當中,以免每次 knit 都要重爬。
### your code
請到 Google
每日搜尋趨勢,以抓取 JSON
的方式,爬下最近一週的搜尋趨勢結果,這裡的一週沒有規定具體日期,從你做作業當天為基礎即可。這題一樣建議你爬好資料之後,可以自行創建並存取在
data/AS05/
資料夾當中,以免每次 knit 都要重爬。
結果部分請加入日期欄位,先印出前 10
個列,接著印出各個日期的筆數(參考程式碼:df %>% count(date)
)。
提示: a. API url 的長相類似這樣 - “https://trends.google.com.tw/trends/api/”,後面還有東西,可以去找一下
b. 可以用迴圈寫,並且在迴圈中更新 API url 的日期
c. 直接用 fromJSON()
會出事,因為 Google
很壞,它故意在結果的前 5 個字塞入不相干的東西阻礙你,建議你可以用
str_sub()
抓取正確的字串再轉換成 JSON
### your code
### result 01
#> # A tibble: 10 × 7
#> title$query $exploreLink formattedTraffic relatedQueries image$newsUrl
#> <chr> <chr> <chr> <list> <chr>
#> 1 取消實聯制 /trends/explor… 20萬+ <df [17 × 2]> https://www.e…
#> 2 推特 /trends/explor… 5萬+ <df [5 × 2]> https://www.c…
#> 3 軟性封城 /trends/explor… 2萬+ <df [3 × 2]> https://www.e…
#> 4 實聯制 /trends/explor… 2萬+ <df [0 × 0]> https://udn.c…
#> 5 林襄 /trends/explor… 2萬+ <df [1 × 2]> https://tw.ne…
#> 6 確診者隔離天數 /trends/explor… 1萬+ <df [1 × 2]> https://www.e…
#> 7 桂冠出版社 /trends/explor… 1萬+ <df [0 × 0]> https://tw.ne…
#> 8 台南市衛生局 /trends/explor… 1萬+ <df [1 × 2]> https://udn.c…
#> 9 籃網 /trends/explor… 5000+ <df [0 × 0]> https://udn.c…
#> 10 蔡京京 /trends/explor… 5000+ <df [0 × 0]> https://www.e…
#> # … with 3 more variables: articles <list>, shareUrl <chr>, date <dbl>
#>
### result 02
#> # A tibble: 7 × 2
#> date n
#> <dbl> <int>
#> 1 20220421 17
#> 2 20220422 20
#> 3 20220423 20
#> 4 20220424 20
#> 5 20220425 20
#> 6 20220426 20
#> 7 20220427 20
這個資料的原始結構有點複雜,請嘗試列出 id
,
date
, query
, formattedTraffic
,
title
, source
, url
,
snippet
等欄位。其中,id
和 date
是自行加入的欄位,其他都是上一小題就能抓到的結果。這題比較難,所以配分低一些。
提示: a. id
: 可以利用
mutate(id = row_number())
b. 原始的 dataframe 不是一般常見的 dataframe,有些 column 本身是
list,又被稱為 nested dataframe,處理起來很麻煩,建議可以用
$
c. 會用到 2 次 left_join()
### your code
### result
#> # A tibble: 863 × 8
#> id date query formattedTraffic title source url snippet
#> <chr> <dbl> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 21 20220427 食藥署 10萬+ 快篩實名… ETtoday https://… 指揮中心…
#> 2 21 20220427 食藥署 10萬+ 家用快篩… ELLE … https://… 在本土Cov…
#> 3 21 20220427 食藥署 10萬+ 懶人包/… udn 元… https://… 本土疫情…
#> 4 21 20220427 食藥署 10萬+ COVID-19… Heho健… https://… 因應確診…
#> 5 21 20220427 食藥署 10萬+ 懶人包/… Yahoo… https://… 三、販售…
#> 6 21 20220427 食藥署 10萬+ 黑髮漂色… 健康醫… https://… 東方人的…
#> 7 21 20220427 食藥署 10萬+ 快篩實名… 遠見雜… https://… 指揮中心…
#> 8 22 20220427 陳昱瑋 10萬+ 勾惡「陳… 台灣蘋… https://… 網紅連千…
#> 9 22 20220427 陳昱瑋 10萬+ 勾惡幫主… ETtoda… https://… YouTube頻…
#> 10 22 20220427 陳昱瑋 10萬+ 遭連千毅… 三立新… https://… 網紅直播…
#> # … with 853 more rows