R_Language 板


LINE

※ 引述《vicror84 (阿汘)》之銘言: : ※ 引述《celestialgod (天)》之銘言: : : 我不知道網頁的header跟內文的關係 : : 我看charset是big5,不過我實際讀表格的資料,還是要用UTF8 : : 所以我抓content的時候用big5是正常的,再用read_html with encoding utf8 : : 之後再把utf8轉回去big5 (windows才要轉,mac, linux不用stri_conv那段) : : 之後就可以看到正常的表格內容了 : : library(httr) : : library(pipeR) : : library(xml2) : : library(stringi) : : library(stringr) : : tableContent <- GET("http://depart.femh.org.tw/HMC/wholebody.html") %>>% : : content("text", encoding = "BIG5") %>>% read_html("UTF-8") %>>% : : xml_find_all("//tr/td/table/tbody/tr") %>>% lapply(function(x){ : : output_text <- xml_find_all(x, "td") %>>% xml_text %>>% : : stri_conv(from = "UTF-8", to = "Big5") %>>% str_replace_all("\\s", "") : : if (length(output_text) >= 9 && length(output_text) <= 11) : : { : : return(c(rep("", 12-length(output_text)), output_text)) : : } else if (length(output_text) == 8) : : { : : return(c(output_text[1:4], unlist(rbind(output_text[5:8], rep("", 4))))) : : } else : : { : : return(output_text) : : } : : }) %>>% do.call(what = rbind) : : 結果截圖: : : http://i.imgur.com/eDG4uEY.png : : 函數說明可以往前翻我的文章,某一篇(#1N9lFXFI (R_Language))下面有一些說明 : : 不懂再回文發問吧 : : #那串的用法:http://evolutionbrain.blogspot.tw/2015/08/ptt.html : 因為我是新手剛學R,看不太懂 str_replace_all("\\s", "") 這段程式, : 還有, str_replace_all(string, pattern, replacement): http://www.inside-r.org/packages/cran/stringr/docs/str_replace_all 把string中符合pattern的字串置換成replacement的字串 例如:str_replace_all("aa bb cc", "\\s", "") "\\s"是regexp裡的空白,""就是零長度的字串,所以置換後就會變成 "aabbcc" %>>% 部分可以參考在板上/magrittr,有一篇簡單的教學文,看%>%部分 我這裡只有一個地方用到%>>%的特色 (do.call(what = rbind)這裡用到而已) : if (length(output_text) >= 9 && length(output_text) <= 11) : { : return(c(rep("", 12-length(output_text)), output_text)) : } else if (length(output_text) == 8) : { : return(c(output_text[1:4], unlist(rbind(output_text[5:8], rep("", 4)))) : } else : { : return(output_text) : } : }) %>>% do.call(what = rbind) : 尤其是那些數字,不太懂他們代表什麼意思,如果逐一註解更好,不方便的話沒有關係 數字是因為網頁的表格有跨欄位的問題,所以他不見得都會抓滿12欄 所以你需要自己手動去補成12欄,我只是做這樣的事情而已 因此,才會在你下一篇回答說那個表格處理請參考我下一篇 也就是這個部分,自己抓出每一列之後,做補滿或是調整空位的部分 這個可能對R新手比較困難一點,但是沒有現成的函數可以直接讀跨欄的欄位 如果只會用XML的readHTMLTable,就只會出現都靠左的情況,剩下都補入"" 這個就只能自己慢慢位移了 逐一註解就不做了,這裡只是一個概念,你需要自己動手去把table抓下來 看看抓下來的每一列長怎樣,然後程式裡對應處理為何 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.74.87
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1465201420.A.0D2.html ※ 編輯: celestialgod (140.109.74.87), 06/06/2016 16:26:20
1F:推 vicror84: 謝謝你~~ 這語言真得很難!! 06/07 22:47







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP