曾經(jīng)因為NLTK的緣故開始學習Python,之后漸漸成為我工作中的第一輔助腳本語言,雖然開發(fā)語言是C/C++,但平時的很多文本數(shù)據(jù)處理任務都交給了Python。離開騰訊創(chuàng)業(yè)后,第一個作品課程圖譜也是選擇了Python系的Flask框架,漸漸的將自己的絕大部分工作交給了Python。這些年來,接觸和使用了很多Python工具包,特別是在文本處理,科學計算,機器學習和數(shù)據(jù)挖掘領(lǐng)域,有很多很多優(yōu)秀的Python工具包可供使用,所以作為Pythoner,也是相當幸福的。其實如果仔細留意微博,你會發(fā)現(xiàn)很多這方面的分享,自己也Google了一下,發(fā)現(xiàn)也有同學總結(jié)了“Python機器學習庫”,不過總感覺缺少點什么。最近流行一個詞,全棧工程師(full stack engineer),作為一個苦逼的創(chuàng)業(yè)者,天然的要把自己打造成一個full stack engineer,而這個過程中,這些Python工具包給自己提供了足夠的火力,所以想起了這個系列。當然,這也僅僅是拋磚引玉,希望大家能提供更多的線索,來匯總整理一套Python網(wǎng)頁爬蟲,文本處理,科學計算,機器學習和數(shù)據(jù)挖掘的兵器譜。
一、Python網(wǎng)頁爬蟲工具集
一個真實的項目,一定是從獲取數(shù)據(jù)開始的。無論文本處理,機器學習和數(shù)據(jù)挖掘,都需要數(shù)據(jù),除了通過一些渠道購買或者下載的專業(yè)數(shù)據(jù)外,常常需要大家自己動手爬數(shù)據(jù),這個時候,爬蟲就顯得格外重要了,幸好,Python提供了一批很不錯的網(wǎng)頁爬蟲工具框架,既能爬取數(shù)據(jù),也能獲取和清洗數(shù)據(jù),我們也就從這里開始了:
1. Scrapy
Scrapy, a fast high-level screen scraping and web crawling framework for Python.
鼎鼎大名的Scrapy,相信不少同學都有耳聞,課程圖譜中的很多課程都是依靠Scrapy抓去的,這方面的介紹文章有很多,推薦大牛pluskid早年的一篇文章:《Scrapy 輕松定制網(wǎng)絡爬蟲》,歷久彌新。
官方主頁:http://scrapy.org/
Github代碼頁: https://github.com/scrapy/scrapy
2. Beautiful Soup
You didn't write that awful page. You're just trying to get some data out of it. Beautiful Soup is here to help. Since 2004, it's been saving programmers hours or days of work on quick-turnaround screen scraping projects.
讀書的時候通過《集體智慧編程》這本書知道Beautiful Soup的,后來也偶爾會用用,非常棒的一套工具??陀^的說,Beautifu Soup不完全是一套爬蟲工具,需要配合urllib使用,而是一套HTML/XML數(shù)據(jù)分析,清洗和獲取工具。
官方主頁:http://www.crummy.com/software/BeautifulSoup/
3. Python-Goose
Html Content / Article Extractor, web scrapping lib in Python
Goose最早是用Java寫得,后來用Scala重寫,是一個Scala項目。Python-Goose用Python重寫,依賴了Beautiful Soup。前段時間用過,感覺很不錯,給定一個文章的URL, 獲取文章的標題和內(nèi)容很方便。
Github主頁:https://github.com/grangier/python-goose