爬蟲概念簡介

1. Introduction

Resource

  1. Downloading github repository R4CSS-Crawlers. Be sure to click the .Rproj to start the RStudio with the project.

  2. Tutorial with gitbook R4CSS

Ethics

What is Crawler

上網的概念其實就是把資料抓回來。瀏覽器的行為一律是把資料抓回來,看是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資料

2. Using Chrome DevTools to inspect http requests

步驟一:選「檢查」開啟Chrome DevTools

首先開啟該頁面(我選擇https://www.104.com.tw/jobs/main/),找空白處按滑鼠右鍵選擇「檢查」。「檢查」後的彈出分頁便是Chrome DevTools。

Chrome DevTools上有數個Tabs,第一個是Elements,通常是前端工程師最常用的,用以檢查頁面上的元素、CSS和XPath;Console通常是偵測用的,可以檢查JavaScript是否有效執行,不然JavaScript本身並沒有工具可以告訴其撰寫了錯誤的代碼。Source通常會顯示目前頁面所載入的HTML或CSS檔案;最後Network是本單元最需要的功能,可檢視在瀏覽器輸入URL,按下Enter後,瀏覽器抓了哪些檔案,做了哪些事。

步驟二:選Network Panel進行前置步驟

打開Network Panel後約有以下三個步驟,請嘗試跟著做,避免錯誤。

  • 先勾取Preserve Log的選項,代表中間若有一些作為參數傳遞用的檔案,勾選Preserve Log意味著要把那些過程留下來,便於觀察。

  • 第二個步驟是點選清除目前紀錄的功能,為一個禁止符號。

  • 第三個步驟是按下該頁重新載入的功能,或者把游標放到網址列處再按Enter,即可以重新載入該頁面。

步驟三:載入頁面並觀察

確定已經輸入「爬蟲」作為關鍵字後,便可照上述步驟,進行搜尋。此時,應該可以看見不少圖檔、.js、.css或者各式各樣的檔案跑出來。

步驟四:找尋所需的JSON檔案

此時,Chrome DevTools的Network Panel中看起來應該如圖。不斷刷新的就是一個又一個的檔案。但這些檔案事實上是有分類的,All自然指的是全部的檔案,CSS和JS是網頁前端和前後端用的,Img和Media就是該頁面上的圖檔和影像檔。而我們所需要的通常是在XHR或者Doc中(其中如果是JSON的話尤其更常見於XHR中)。

此時,從XHR和Doc Tab應該找不到JSON的資料檔(但其實我知道他是一個JSON檔),因此,我就找看看第二頁、第三頁的資料在哪裡。要找第二頁和第三頁的資料,就要把滑鼠往下滾,要不繼續往下滾讓他觸發下一頁的資料,要不就是點選第二頁、第三頁的超鏈結,來找尋固定的規則。而104是屬於第一種方法,一直往下滾,他就會把新的資料傳回來。

一直往下滾的過程會發現XHR跳出好幾個回傳的JSON檔案。

步驟五:複製JSON檔案連結。

點選該網頁後,不要停留在Preview Tab,點選Headers Tab可以看出你自己的網頁是發出了什麼Request給伺服器一端。Headers裡面所記錄的就是當發出一個Request時,伺服器端回應了什麼Response。Request中可以跟著發出去的有:

  1. Referer: 進到這一頁前,是從哪一頁跳過來的。

  2. 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檔案。

<練習>

請找到下列網頁中資料的連結

空品資料中央監測資料https://airtw.epa.gov.tw/CHT/EnvMonitoring/Central/CentralMonitoring.aspx

Dcard感情版最新文章 https://www.dcard.tw/f/relationship?latest=true

Last updated

Was this helpful?