→ celestialgod: library什麼套件要寫... 06/16 14:41
※ 編輯: clansoda (1.175.238.8), 06/16/2016 15:02:07
→ clansoda: 已修改 06/16 15:02
→ celestialgod: 這裡只是windows顯示不出來UTF8的字元而已 06/16 15:26
→ celestialgod: 版上搜尋readHTMLTable 有一篇W大的解法 06/16 15:29
→ celestialgod: 我是都用xml2硬幹... rvest的html_table都會失敗 06/16 15:34
→ celestialgod: 除非換去linux/mac才比較簡單的解法(攤手 06/16 15:34
→ celestialgod: 網頁編碼板上還有很多篇...可以都去看看 06/16 15:36
→ clansoda: 請問C大 pipeR的%>>% 跟dplyr的%>% 有哪裡不同嗎? 06/16 16:17
→ clansoda: 還有個問題是所謂的node是在html裡面的tag嗎? 06/16 16:28
→ clansoda: 我查看他的manual 卻不理解什麼是node 06/16 16:29
→ celestialgod: %>%是出自magrittr...不是dplyr 06/16 16:32
→ celestialgod: node就是xml的tag沒錯 06/16 16:32
→ celestialgod: 我不太用rvest,這裡可以用xml2的xml_find_all取代 06/16 16:33
→ celestialgod: 至於%>>%跟%>%的差異,網路上找一下pipeR作者的部落 06/16 16:34
→ celestialgod: 格吧 06/16 16:34
→ clansoda: 可是我的package沒有magrittr也可以用%>%耶 06/16 16:35
→ celestialgod: %>>%大多數支援%>%的寫法,不過有一些新功能還不錯 06/16 16:35
→ celestialgod: 用,也有比較好的速度 06/16 16:35
→ clansoda: 是depenceies的關係嗎 06/16 16:35
→ celestialgod: 因為dplyr會從magrittr import %>% 06/16 16:36
→ clansoda: 所以您比較推薦%>>% 這個用法嗎? 06/16 16:36
→ clansoda: 了解 所以是magrittr 才有%>% 06/16 16:36
推 celestialgod: dplyr是depend on magrittr沒錯 06/16 16:36
→ celestialgod: 我比較喜歡%>>% 06/16 16:37
→ clansoda: 那請想請教一下 GET %>% content這個部分 06/16 16:38
→ clansoda: 我GET以後看起來是一串LIST而不是html code 06/16 16:39
→ celestialgod: GET是送request,content是轉成xml_node, text或 ra 06/16 16:39
→ celestialgod: w的函數 06/16 16:39
→ clansoda: 然後content("raw") 是一連串成對的數字 這跟我過去用的 06/16 16:40
→ clansoda: getURL 所以抓下來的東西完全不同 06/16 16:41
→ clansoda: 所以GET是還沒抓下來的動作嗎? 抱歉因為之前很少做過 06/16 16:41
→ clansoda: 只用過ATTR來抓過資料 06/16 16:41
→ celestialgod: 這裡,我可能嘗試的時候沒刪掉,這裡直直接GET>>% 06/16 16:42
→ celestialgod: content %>>% html_nodes("table")N可以 06/16 16:42
→ celestialgod: 就可以 06/16 16:42
→ clansoda: 我看了一下那頁的HTML 共有三個</table> 06/16 16:48
→ clansoda: 所以走到這步的時候 這個LIST的三個ELEMENT就各是 06/16 16:48
→ clansoda: 這三個TABLE的html了是嘛 06/16 16:48
→ celestialgod: 三個table第一個table包了二三個table,第二個看起 06/16 16:49
→ celestialgod: 來是空的 06/16 16:49
→ celestialgod: 是的 06/16 16:49
→ clansoda: 那想請問 '[['(3) 這個用法我從來沒看過 看來是指抽出 06/16 16:50
→ clansoda: 第三個table 可是為什麼是這樣寫呢 06/16 16:50
→ clansoda: 感謝C大的講解,我有看懂這個pattern了 第二個table 06/16 16:51
→ clansoda: 看起來很小 好像是塞了圖片在裡面 06/16 16:52
→ celestialgod: '[['(3) 這樣寫是為了%>>% 06/16 16:56
→ celestialgod: list_obj[[3]]跟 '[['(list_obj, 3)是一樣的 06/16 16:56
→ celestialgod: pastebin做了一點修改,把rvest移除,全用xml2處理 06/16 16:59
→ clansoda: 所以'[['(3) 代表list 第三個element是嘛? 06/16 17:03
→ celestialgod: 對 06/16 17:03
→ clansoda: C大請問一下 你在xml_find_all 後面用了兩個table 06/16 17:10
→ clansoda: 我自己測//table 的寫法會跟html_nodes("table") 06/16 17:10
→ clansoda: 一樣,那為什麼寫兩個會變成只剩兩個table呢? 06/16 17:10
→ celestialgod: 前面有說,第一個table包了後兩個 06/16 17:11
→ celestialgod: 這裡的目標應該是第一個table的第二個 06/16 17:11
→ celestialgod: 所以我就只找table下的table 06/16 17:11
→ celestialgod: 這樣第一個table就不會包含進來了 06/16 17:12
→ clansoda: 喔喔 所以假如有三層 有一個超大的包中的再包小的 06/16 17:15
→ clansoda: 我的寫法就會變成xml_find_all("/table/table/talbe") 06/16 17:16
→ celestialgod: /跟//是不一樣的 /是下一層,//是中間隔好幾層 06/16 17:24
→ celestialgod: 如果三層應該通常正確是 table/tr/td/table/tr/td/. 06/16 17:25
→ celestialgod: 為了簡化 就會寫成 table//table//table 06/16 17:25
→ Wush978: 翻轉教室中的 02-RDataEngineer-02-XML 有R處理XML的教學 06/16 19:00
→ Wush978: 也許有幫助 06/16 19:00
→ celestialgod: wush一出手,便知有沒有 06/16 19:34
→ clansoda: wush大,我之前也有想要去看一下這個,但是我一裝 06/16 19:43
→ clansoda: 他就崩潰了 06/16 19:43
→ Wush978: 最近常常以人回報這個問題,好怪 06/16 20:10
推 Wush978: 你直接看網頁也可以 06/16 20:10
→ psinqoo: 如果要抓中文 還是用 LINUX 06/17 08:55
→ clansoda: linux不是要用指令嗎 我不太熟 06/17 10:23
→ clansoda: wush大 我可以用了 swirl 大概了解整個結構了 06/17 10:23
→ celestialgod: linux有桌面板 06/17 10:25
→ clansoda: C大可以請問一下 為什麼我在你用GET+content那邊用 06/17 11:24
→ clansoda: read_html的方式 不能得到一樣的答案呢? 06/17 11:24
→ clansoda: 如果我讀單一的頁面用read_html會得到head 跟body兩個 06/17 11:25
→ clansoda: 部分,但是用sapply以後會得到一個pointer開頭的東西 06/17 11:25
→ clansoda: 痾 沒事了,好像是我自己的問文 06/17 11:29
→ clansoda: 只是一開始好像會得到很多問號 06/17 11:30
→ clansoda: 我以為是錯的 06/17 11:30
→ celestialgod: GET %>>% content完就是xml_node的class 06/17 11:40
→ celestialgod: 不需要再read_html 06/17 11:40
→ celestialgod: 除非content用raw或是text才需要 06/17 11:40
→ clansoda: 我現在已經可以做到把td下面的文字弄成中文 06/17 12:03
→ clansoda: 但是要怎麼弄才能變成table或者dataframe呢 06/17 12:05
→ clansoda: 您的do.call(rbind)這個我一直弄不出來 06/17 12:06
→ celestialgod: %>>% do.call(what = rbind)這寫法只有%>>%可以用 06/17 12:17
→ celestialgod: 要用%>% 要改成 %>% do.call(rbind, .) 06/17 12:17
→ clansoda: 他會顯示 second argument must be a list 06/17 12:21
→ clansoda: 我已經用lapply 應該出來的結果會是list才對 06/17 12:22
→ clansoda: 我現在是將抓出來的character轉成matrix再轉成dataframe 06/17 12:22
→ clansoda: 雖然麻煩一點,但是用程式跑也只要寫一次就好了 06/17 12:23
→ celestialgod: 嗯? 你寫do.call(rbind)還是do.call(what=rbind) 06/17 12:29
→ celestialgod: 我這跑是都沒問題 06/17 12:29
→ celestialgod: 看你PIPE是用哪一個,寫法不一樣 06/17 12:30
→ clansoda: C大,我印象中有個function可以組合數列 06/17 15:41
→ clansoda: 例如 a=1:5 b=1:10 用了這個function 他會 1-1 1-2~1:10 06/17 15:42
→ clansoda: 2-1~2:10 我臨時找不到這個function叫做什麼 06/17 15:42
→ celestialgod: expand.grid? 06/17 15:55
→ clansoda: C大我有找到方法了 06/21 16:20
→ clansoda: 請問C大,這種網頁是不是完全爬不了 06/21 16:20
→ clansoda: 外面能爬的那個網頁,他大概有幾百個缺漏值,可能他後來 06/21 16:21
→ clansoda: 就不曾更新了,因此有些新開的他就沒加進去了 06/21 16:21
→ celestialgod: 沒有爬不了的網頁XD 晚一點再來研究 06/21 16:37
→ clansoda: 感謝,因為它是用aspx的檔案,我看不到他的資料寫在 06/21 16:39
→ clansoda: 哪一個NODE裏頭,所以我很難找出正確的寫法 06/21 16:39