在 Day 21 的內容中有介紹 Selenium 和 puppeteer 兩種在程式中操作瀏覽器的方式,今天來看看怎麼在 Scrapy 中使用。 Seleni...
目前為止我們都是用 scrapy crawl <spider-name> 指令來啟動爬蟲,但有時候可能需要在程式中來啟動爬蟲(例如提供一個 API...
今天是鐵人賽的最後一天了。老實說每天要四個語言實在是有點太高估自己的時間狀況,加上 Context Switch 的成本,導致過程之中許多時候都只能先寫部分再慢...
今天要來看看一個大家應該不會太陌生,但對我來說每次只要一久不用就會忘掉的正規表示式 (Regular expression)。正規表示式在處理複雜規則的字串很有...
晃眼間,就到鐵人賽最後一天。 經過一個月的努力,也讓我深入瞭解Lektor的功能,最後也成功地完成一開始訂下的目標:『將Lektor網頁部署到GitHub上。』...
在 Day 22 的文章中有提到 Scrapy Engine 和 Downloader 間的資料傳遞會經過一系列的 Downloader Middlewares...
說的其實就是Travis-CI,提供github持續整合專案的平台。設定Travis-CI部署的方式共分4個步驟: .travis.yml .lekto...
先前寫了那麼多程式,是時候來談談測試了。這裡的測試指的是 Unit test,大部分的時間是以一個 Function、Class 等等為單位去測試,看輸入幾組設...
延續昨天的主題,今天要建立一個 Pipeline 元件,用來將爬到的資料存到 MongoDB 中。 建立 Pipeline 元件 在專案目錄的 pipeline...
Lektor 在GitHub Pages支援上比GitLab還要好一點,可以不用自己手動push上去,與前幾天提到的ftp、rsync一樣,可以直接在.lekt...
今天 Hackerrank 的主題是探討時間複雜度,透過的題目是給定一個整數,看看這個整數是不是質數。假設這個質數是 n 的話,希望解法的時間複雜度是 O(根號...
每次遇到宣稱很棒很優秀實際上傲嬌不給用的軟體實在是很困擾啊 生物資訊研究中,研究者時常需要自己編寫客製化的程式碼腳本。不論是視覺化或是統計分析的功能,通常都是引...
當 scrapy.Spider 爬蟲抓到資料後,會將資料送往 Item Pipelines 進行一系列的處理。常見的使用情境是: 清理 HTML 資料 驗證資...
老實說今天 Hackerrank 的主題讓我有點不想浪費一天的篇幅去講,因為是在講 Nested Logic,說穿了就只是要你練習兩層以上的 If Else 之...
在git平台中,比較著名的Github及GitLab兩大平台,Lektor都有提供部署方法。當然除了這兩個平台,還有Bitbucket等強大的平台,只是目前Le...
今天在 Hackerrank 的主題是,延續我們之前研究的 Linked list,為這個 Linked list 去增加一個 Function 來把 Link...
在前幾天的爬蟲中,我們都是以 Python dict 的結構在儲存爬取結果,隨著爬蟲數量增加,會在越來越多的程式中使用到相同的結構來儲存資料,但同時也容易在不同...
FTP相對來說是比較不安全的傳輸方式,而SSH可以提供安全的傳輸管道。 SSH以非對稱加密實現身分驗證。身分驗證有多種途徑,例如其中一種方法是使用自動生成的公鑰...
今天的主題是延續昨天的 Binary Search Tree,我們要來看其中一種 Traversal 的方法,所謂 Traversal 就是用某種順序來走訪 B...
大概兩個禮拜前我們已經有用 requests + BeautifulSoup 兩個套件來把文章爬取下來了,今天會把相關的邏輯都移植到 Scrapy 框架中。先附...
從小時候就存在的FTP,現在依舊還是偶爾會使用到。貼心的Lektor也提供FTP部署的設定: [servers.production] target = ftp...
接下來終於要進入正題了。前面介紹完Lektor基本功能後,也需要介紹部署到github的方法,不然怎麼符合一開始的目標呢! 在部署的時候有兩個步驟,第一個為bu...
今天我們要來看的是 Binary Search Tree (BSTs)。Tree 是由有限節點組成具有層次關係的集合。以下圖為例,最上面的節點稱作根節點 (Ro...
昨天用 scrapy genspider ithome ithome.com 指令建立出來的爬蟲檔案 ithome.py 內容是這樣: import scrap...
今天要來談談 Generic。由於靜態語言對於宣告的類型有嚴格的規定,Generic 的出現則是讓這件事情變得更加彈性,可以將一套程式碼複用在不同類型的資料上。...
安裝 安裝套件 pipenv install scrapy 曾經在安裝的時候遇到 Twisted 一直安裝失敗,無法透過 pip 安裝。如果有遇到的讀...
在lektor中,model扮演著很重要的角色(當然content及template也是)。接下來會以models/page.ini檔案作為範例,說明model...
請證明你不是機器人 繪製親緣關係樹的前置工作中,搜集所有適合一起比對的基因之序列是十分累人的工作。我不寫程式以前,會找一首喜歡的專輯,放著聽,然後開始開啟大量瀏...
寫了好幾天的爬蟲,不知道大家有沒有感覺同一支程式中要關注的事情太多。目前我們爬蟲的流程大概是這樣: 發送請求,取得網頁 HTML 原始碼 可能需要額外的重試...
今天我們要來談談 Sorting,也就是排序。排序看似不起眼,但其實在電腦的世界扮演了許多關鍵的角色,例如當我們要更有效率地搜尋出某個東西的時候,又例如我們要按...