爬蟲概念簡介
Last updated
Was this helpful?
Last updated
Was this helpful?
Downloading github repository . Be sure to click the .Rproj
to start the RStudio with the project.
Tutorial with gitbook
在教各位撰寫網頁爬蟲前,必須提醒各位,勿大量、不當爬取資料,不當的爬蟲可能會觸犯法律。尤其是學校圖書館的資料庫。聯合知識庫一則新聞是30元,漢珍新聞資料庫在一萬筆內就會發布警訊。通常觸犯法律會是以下幾項要件:
該資訊服務為了避免第三方使用者爬取他的資料,所以設計了一些檢核機制。若第三方使用者刻意用不同方法繞過這些檢核機制,即有觸法的可能。例如偽造IP等。
因為大量爬取資訊,從每小時、每日、每週、每月的流量尺度來算產生大量的request(比方說1%都是來自於同一個使用者),那就會有觸法的嫌疑。主訴是因為這樣的大量操作會影響服務提供方的服務品質。
上網的概念其實就是把資料抓回來。瀏覽器的行為一律是把資料抓回來,看是CSV、JSON、或所見的網頁(HTML)都是資料。 瀏覽器遇見HTML會照上面的HTML code把他做視覺化,就是你看見的網頁。
實作上,共通的過程是,用GET()
或POST()
發出request把資料拿回來用content()
解開,通常都是文字型態,然後看文字內容就知道是CSV或JSON或html。 之後CSV用read_csv()
讀,JSON用fromJSON()
讀、html則要寫html parser來剖析。
發出request時通常會把一些你的電腦的資料包在裡頭,好讓對方做驗證,知道你是不是非法存取。這些資料包含,你是用什麼瀏覽器、幾點幾分、縣市、用手機或電腦 發?這些東西會放在request的header中送出去。 收到response的時候,也會收到一些header資料,例如,你登入後他給你一段cookie讓你存取他的服務,或者你按了十八禁後,他給你一個碼,好讓你不用一直按「我已經滿18歲」 所以收發之間都會送出和收到header資料
Chrome DevTools上有數個Tabs,第一個是Elements,通常是前端工程師最常用的,用以檢查頁面上的元素、CSS和XPath;Console通常是偵測用的,可以檢查JavaScript是否有效執行,不然JavaScript本身並沒有工具可以告訴其撰寫了錯誤的代碼。Source通常會顯示目前頁面所載入的HTML或CSS檔案;最後Network是本單元最需要的功能,可檢視在瀏覽器輸入URL,按下Enter後,瀏覽器抓了哪些檔案,做了哪些事。
打開Network Panel後約有以下三個步驟,請嘗試跟著做,避免錯誤。
先勾取Preserve Log的選項,代表中間若有一些作為參數傳遞用的檔案,勾選Preserve Log意味著要把那些過程留下來,便於觀察。
第二個步驟是點選清除目前紀錄的功能,為一個禁止符號。
第三個步驟是按下該頁重新載入的功能,或者把游標放到網址列處再按Enter,即可以重新載入該頁面。
此時,Chrome DevTools的Network Panel中看起來應該如圖。不斷刷新的就是一個又一個的檔案。但這些檔案事實上是有分類的,All自然指的是全部的檔案,CSS和JS是網頁前端和前後端用的,Img和Media就是該頁面上的圖檔和影像檔。而我們所需要的通常是在XHR或者Doc中(其中如果是JSON的話尤其更常見於XHR中)。
此時,從XHR和Doc Tab應該找不到JSON的資料檔(但其實我知道他是一個JSON檔),因此,我就找看看第二頁、第三頁的資料在哪裡。要找第二頁和第三頁的資料,就要把滑鼠往下滾,要不繼續往下滾讓他觸發下一頁的資料,要不就是點選第二頁、第三頁的超鏈結,來找尋固定的規則。而104是屬於第一種方法,一直往下滾,他就會把新的資料傳回來。
一直往下滾的過程會發現XHR跳出好幾個回傳的JSON檔案。
點選該網頁後,不要停留在Preview Tab,點選Headers Tab可以看出你自己的網頁是發出了什麼Request給伺服器一端。Headers裡面所記錄的就是當發出一個Request時,伺服器端回應了什麼Response。Request中可以跟著發出去的有:
Referer: 進到這一頁前,是從哪一頁跳過來的。
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36。User-Agent為該支手機用以上網的瀏覽器型號。
複製下來的網址如下,你可以點點看能不能開啟一個JSON檔案。
但其實這個例子寫程式沒那麼容易爬取,因為他設定了一些限制,一方面記錄拜訪者的行為,另一方面避免爬蟲大量爬取他們的服務。
首先開啟該頁面(我選擇),找空白處按滑鼠右鍵選擇「檢查」。「檢查」後的彈出分頁便是Chrome DevTools。
確定已經輸入「爬蟲」作為關鍵字後,便可照上述步驟,進行搜尋。此時,應該可以看見不少圖檔、.js、.css或者各式各樣的檔案跑出來。
空品資料中央監測資料
Dcard感情版最新文章