#註: 本篇筆記諸多內容直接紀錄課程原文,而本文也僅整理資訊之用途
課程連結 : R語言翻轉教室
RDataEngineer-02-XML
XML的全名是:eXtensible Markup Language,是一種讓電腦可以快速理解資訊的標記語言。XML的透過標記來讓電腦理解資訊的內容,並且把標籤與內容清楚的切割開。
XML的文件中,標籤是可以有結構關係的。在慣例中,我們會說tr是th的父標籤(parent),而th與td兩者都是tr的子標籤(children)| 每個標籤最多只有一個父標籤。這是因為th和td兩個標籤,寫在<tr>和</tr>之間。
在HTML網頁中,幾乎所有的標籤都有父標籤,除了html這個標籤以外。所以我們在處理HTML文件時,會稱呼這個標籤為整個文件的根(root)。
更多瞭解可以輸入wiki_html()或wiki_xml()了解更仔細的背景知識。
主要使用R套件 : xml2
xml2套件要處理XML或HTML文件之前,必須要先作解析,將文件建立成一種特殊的R 物件後,才能讓我們挖掘資訊。
#挖掘網頁資訊的三步驟:
1. 找到標籤 2. 查詢屬性 3.檢查內容
1.read_xml : 讀取xml檔,`read_xml`函數有`x`、`encoding`和其他參數可以使用。 `x`則可以是一個檔案路徑(filepath)、一個網址(url),或是一個XML文本的字串向量(literal xml)。
目前xml2中的物件,大致上可以分成三種:xml_document、xml_node和xml_nodeset。 xml_document就代表整個XML文件。xml_node則對應到上述介紹的XML標籤,在經過`read_xml`後每個標籤會被轉化為一個xml_node。xml_nodeset則是一群標籤的集合。
2.xml_find_all :
共有兩個參數:`x`與`xpath`。`x`可以是xml_document、 xml_node或xml_nodeset。而`xpath`(XML Path Language)則是一種特別的格式,讓我們可以和電腦溝通我們要搜尋的標籤。
#範例:xml_find_all(doc1, "/a/b")
=> a: 父標籤 b:子標籤
若沒有提供父標籤,無法搜尋出欲搜尋之子標籤
3.xml_text( ) : 取出標籤內的內容
4.xml_parent() : 查詢標籤的父標籤
5.xml_contents() :
同樣為取出標籤內容,但當含有子標籤時, 它和`xml_text`的行為會不太一致
6.xml_children(a) :
來取得所有以a 為父標籤的標籤們
7.xml_attrs() :
取得XML標籤的屬性(帶有名字的字串向量)在使用XPath尋找標籤時,屬性是可以派上用場的。
#範例
`xml_find_all(doc1,"/a/c[@class]")`,意即是搜尋時增加:「標籤必須要帶有 名稱為"class"的屬性」。
甚至還可以指定屬性的值,例如:`xml_find_all(doc1, "/a/c[@class='g']")
一種XPath中常常使用的定位方式 : "//"
這裡的"//"代表的就是任意位置。
當我們在處理複雜的網頁資料時,如果每次都要從根部尋找正確的路徑,是非常不方便的。此時,透過"//a",我們就可以找到在所有位置都出現的a標籤。# "//"的用法是可以搭配屬性的過濾使用的。
#HW:
1. browseURL() : 輸入URL網址即可使用預設瀏覽器,瀏覽網頁
2. read_html() : 載入網頁內容
3. encoding() : 告訴電腦,應採用哪種編碼讀取該物件
範例: Encoding(ths_text) <- "UTF-8"
#備註:
最後再次推薦R語言翻轉教室,做作業時遇到瓶頸,可直接在線上討論區直接發問,不至於自己一個人想破頭,卻無法得到解答。
Lucky Club Casino Site & Mobile Review
回覆刪除The Lucky Club site is one of the most popular online casino websites. The operator is owned and operated by S.I. luckyclub.live Limited and is owned by Rating: 8/10 · Review by luckyclub.live