說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
在編程當中有許多語言,有c語言,有C++語言,有basic語言,也有Pascal語言,這些語言都是比較常見的,而python也是編程語言當中的一種,如果不是專業的人員,對于這一編程語言是不了解的。那么這一編程語言是什么?又是如何使用的呢?接下來我們就一起來好好的了解一下吧。
利用python進行數據分析——python是什么
Python是一種開放源代碼的腳本編程語言,這種腳本語言特別強調開發速度和代碼的清晰程度。它可以用來開發各種程序,從簡單的腳本任務到復雜的、面向對象的應用程序都有大顯身手的地方。Python還被當作一種入門程序員最適合掌握的優秀語言,因為它免費、面向對象、擴展性強同時執行嚴格的編碼標準。
當我們使用正則表達式抓取國家面積數據時,首先要嘗試匹配元素中的內容,如下所示:
從上述結果看出,多個國家屬性都使用了< td class=”w2p_fw” >標簽。要想分離出面積屬性,我們可以只選擇其中的第二個元素,如下所示:
雖然現在可以使用這個方案,但是如果網頁發生變化,該方案很可能就會失效。比如表格發生了變化,去除了第二行中的國土面積數據。如果我們只在現在抓取數據,就可以忽略這種未來可能發生的變化。但是,如果我們希望未來還能再次抓取該數據,就需要給出更加健壯的解決方案,從而盡可能避免這種布局變化所帶來的影響。想要該正則表達式更加健壯,我們可以將其父元素< tr >也加入進來。由于該元素具有ID屬性,所以應該是唯一的。
這個迭代版本看起來更好一些,但是網頁更新還有很多其他方式,同樣可以讓該正則表達式無法滿足。比如,將雙引號變為單引號,< td >標簽之間添加多余的空格,或是變更area_label等。下面是嘗試支持這些可能性的改進版本。
雖然該正則表達式更容易適應未來變化,但又存在難以構造、可讀性差的問題。此外,還有一些微小的布局變化也會使該正則表達式無法滿足,比如在< td >標簽里添加title屬性。
從本例中可以看出,正則表達式為我們提供了抓取數據的快捷方式,但是,該方法過于脆弱,容易在網頁更新后出現問題。幸好還有一些更好的解決方案,后期將會介紹。
Beautiful Soup是一個非常流行的 Python 模塊。該模塊可以解析網頁,并提供定位內容的便捷接口。如果你還沒有安裝該模塊,可以使用下面的命令安裝其最新版本(需要先安裝 pip,請自行百度):
使用 Beautiful Soup 的第一步是將已的 HTML 內容解析為 soup 文檔。由于大多數網頁都不具備良好的 HTML 格式,因此 Beautiful Soup 需要對其實際格式進行確定。例如,在下面這個簡單網頁的列表中,存在屬性值兩側引號缺失和標簽未閉合的問題。
如果 Population 列表項被解析為 Area 列表項的子元素,而不是并列的兩個列表項的話,我們在抓取時就會得到錯誤的結果。下面讓我們看一下 Beautiful Soup 是如何處理的。
從上面的執行結果中可以看出,Beautiful Soup 能夠正確解析缺失的引號并閉合標簽。現在可以使用 find() 和 find_all() 方法來定位我們需要的元素了。
Lxml 是基于 libxml2 這一 XML 解析庫的 Python 封裝。該模塊使用 C語言 編寫,解析速度比 Beautiful Soup 更快,不過安裝過程也更為復雜。和 Beautiful Soup 一樣,使用 lxml 模塊的第一步也是將有可能不合法的 HTML 解析為統一格式。下面是使用該模塊解析一個不完整 HTML 的例子:
同樣地,lxml 也可以正確解析屬性兩側缺失的引號,并閉合標簽,不過該模塊沒有額外添加 < html > 和 < body > 標簽。解析完輸入內容之后,進入選擇元素的步驟,此時 lxml 有幾種不同的方法,比如 XPath 選擇器和類似 Beautiful Soup 的 find() 方法。不過,后續我們將使用 CSS 選擇器,因為它更加簡潔,并且能夠在解析動態內容時得以復用。此外,一些擁有 jQuery 選擇器相關經驗的讀者會對其更加熟悉。
以上就是有關利用python進行數據分析的所有內容,從這里我們就可以知道至于語言,在網站優化的過程當中是非常重要的,也是經常會使用到的一種方法,所以如果你是網絡優化的從業者,那么學習這一編程也是非常必要的。如果想了解更多的內容,歡迎關注我們文軍營銷的官網。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732