用 requests 網路爬蟲並儲存

今天我們來試試看基本的網站爬蟲吧~~先講一下爬蟲的基本原理:大家看到的所有網頁都是由一份叫做 ” html ” 的文件所構成。講到這邊大家可能會覺得很奇怪:沒道理阿~我們看到的明明就是很多圖案、相片或是按鍵構成的阿 ? 怎麼可能是一份”文件”呢 ? 其實沒錯,所有的網頁背後有一份一份的文件,我們看到的畫面是由瀏覽器 ” 詮釋 ” 出來的結果,所以爬蟲其實背後的運作就是越過瀏覽器直接跟 server 要一份份的 ” 文件 ” ,那利用 Python 蒐集文件有什麼好處呢 ? 第一個就是快,利用 Python 來做,程式一旦開始執行,可以在短時間內做出數十甚至數百下的點擊;第二,我們可以很精準的擷取我們要的資訊,像是在前面利用正規表示式,我們可以把網頁中的信箱都爬取下來;第三,我們可以存檔方便未來查詢,甚至進行數據分析。所以下面我們來看看要怎麼做吧 !!

我們今天就來爬 ” 正規表示式 Regular Expression “(網址:https://wp.me/p9Q764-71) 這篇的網頁,並看看他出來會得到什麼樣子的結果吧 !!

import requests
url = "https://wp.me/p9Q764-71"
page = requests.get(url)
page.encoding = "utf-8"
print(page.text)

上面我可以看到 Python 抓出了一大段的很可怕的內容,但是這些就包含了一整個頁面,當然文章的內容也被包含在這份html當中囉~~未來我們可以利用其他的套件,來擷取出這些內容,甚至是對於內容進行分析。

接下來我們要試著它儲存起來,這樣就可以把這份文件放到我們自己的電腦當中囉~在開始之前需要創建一個資料夾,接著我們把這個料夾的路徑放到程式碼中(我這邊是在C槽中創建一個 ” page ” 資料夾)

建立資料夾完後,我們就開始使用Python來存檔:

file = open(r'c:\\page\page.txt', 'w', encoding = 'UTF-8')
file.write(page.text)
file.close()

這邊事先在page這個資料夾中開一個叫做 page.txt 的檔案,然而此時我們還未建立這份文件,所以電腦會幫你開啟一份 page.txt 的空白文件。接著利用write把內容寫到這份文件,最後還要記得把這份文件關掉才算是大功告成喔~

最後就會在page的資料夾中看到我們剛剛產生的文件,而整個網頁的內容也都被儲存起來囉~

今天的爬蟲只是很初步很初步的開始,Python存在其他的套件來解析這份文件,或著是可以用正規表示式來挖裡面的東西,總而言之,資料在手,希望無窮,大家可以試試看自己去抓取不同的網頁。

( Python爬蟲推薦用書 ) 網站擷取:使用Python

博客來連結~

今天要來推薦新的一本書拉 ~ 《網站擷取使用Python》

什麼是網站擷取?為什麼要使用網站擷取技術?大家知道,在這個世界上通往最大資料庫的入口是什麼嗎 ? 答案就是現在大家正在使用的 www ,只要可以連上網路,你就可以通往世界各地的 server ,當然也包括你們現在看到的 TinyCorner 。網路上充斥著形形色色的資料,包括你需要的資料,甚至是包括你不需要知道的資料。然而,利用網路存在三個很大的問題:首先,耗費時間,我們花費很多時間來找到特定的資料,最後還得確認他的正確性。即便我們找到某個很棒的網站,可能每天還要花點時間看看他有沒有更新 ;接著,資料格式雜亂,在網站上找到的資料,想要把它變成可以分析的資料格式,需要花費很多的時間。假設我們要觀察每天 PM 2.5 的統計資料,就必須手動一筆一筆把資料貼到 Excel 或是其他分析軟體,最後才能得我們想要資訊;最後,資料放在其他人的server上,存在server當機的風險:像是網站停止經營、server故障。記得每次 Ptt 的 server 一旦掛掉,鄉民就會大暴動…所以如果是相當重要的資訊,我們就需要把資料爬取下來存在自己的硬碟上,我們才能確保這些資料能隨時提供自己使用。

以上這些事情, Python 幾乎可以在各個面向提供相當大的協助。在 Python 流行前,大家需要花費很大的心血來寫爬取網站的 code (有看過好幾萬行的 code ),為了精準的取到自己想要的資訊,需要大把大把的程式碼來達到目的。不過在 Python 的時代:不要重複製作輪子,利用現成的套件每個人很快就可以滿足需求,並且有成千上萬的人幫忙debug。並且用 Python 爬蟲,所獲得的資料可以馬上用程式碼分析( 也就是我這邊的數據分析教學 ),馬上就可以轉換成你所需的資訊。

《網站擷取使用Python》這本書,一步步帶你去建立自己的爬蟲程式,在本書中,一開始是帶你抓取 Wiki 網站的資訊。除了 HTML 外,也包含 API 的爬取方式,並且一步一步地把資料清理乾淨,存到你的電腦當中。除了技術上的教學外,還有跟讀者討論網站如何反制其他人去爬取自己的網站 ( 大家持續爬取行為會造成網站的server負擔過重 ,並且以網站的經營者來看,其實不希望其他人把他們的網站整個搬到自己電腦中…),並且如何破解他們防治的手法,也有討論爬蟲的法律問題( 爬取人家的網站某種程度上來說,算是沒經過他們同意就”借取”的資料庫)。整體來說,若是對於 Python 爬蟲有興趣的話,會是一本不錯的入門到進階的書。

P.S. 最近自己寫好了一個可以自動爬取表特版的程式,把每天發表的文章中的圖片自動下載下來,大家也可以試著找找看要爬取哪些資訊吧。