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