華文網

神級程式師讓你見識下什麼才是企業級項目!通過這個拿到20K月薪

爬取簡書全站文章並生成 API

1. 網頁源碼分析:

以下是簡書首頁文章處的源碼:

若文章沒有被打賞過,則“打賞”在網頁源碼中不會存在,代碼中會進行處理,剩下的都會存在,但在爬取“熱門”目錄下的文章時,“閱讀數”,“評論數”,“喜歡” 也會出問題,所以代碼中也都做了相應的處理。這篇文章分享之前我還是要推薦下我自己的Python學習交流群:103456743不定期分享乾貨,

包括我自己整理的一份2018最新的Python資料和零基礎入門教程,歡迎各位小夥伴。

簡書各個目錄代碼格式相同,所以相同的方法也可以爬取簡書其餘幾個分類目錄。

6. 部署上線

使用 nginx + uwsgi + django + supervisor 進行環境部署

或者

使用 docker 進行環境部署

已經介紹了簡書網站的結構,爬取文章前對網頁源碼進行必要的分析,以及整個專案的步驟,開始介紹如何爬取簡書分類目錄下的文章,

開始寫 models:

此 API 的設計是模仿知乎日報 API 的形式,models 分兩層,第一層是概要資訊,第二層是詳細內容,以概要資訊作為外鍵。

爬取文章詳細資訊代碼:

代碼運行結果:

已經提到過,“熱門”目錄和“新上榜”目錄下代碼的結構相同,所以以上代碼稍作修改完全可以爬取“熱門”下的文章,但我將“熱門”下爬取到的文章放在了一張表裡,大家可以自行嘗試。

前面介紹了從分析網頁源碼到爬取文章並將其保存在 MySQL 中的過程,如有不明白的,請務必看完前幾節的介紹:

編寫 models:存儲資料使用的欄位

編寫需要進行序列化的欄位:將欄位序列化為 JSON 的形式輸出

編寫 views:對資料進行的各種存取操作

編寫 URL:訪問 API 所使用的 URL

models 在上一節中已經寫好,此處不再贅述。

編寫需要進行序列化的欄位

編寫 views

ReadOnlyModelViewSet 自動提供了“唯讀”方法,然後按時間排序取出資料庫中相應數量的文章。

編寫 URL

使用 Router 類可以自動生成 URL,我們需要做的僅僅是正確的註冊 View 到 Router中:

再次訪問 api 介面 http://222.24.63.118:8080/。

就已經可以爬取簡書全站的文章做成 API,並且可以部署上線了。但是我對 Docker 這個很火的東西非常感興趣,前段時間學了 Docker 的基本操作,正好可以用上。這也時我第一次用 Docker 部署 Django 應用,若有不正確的地方,還望指出。

使用 Docker 部署 Django 應用程式

到此,所有容器的創建過程都已經瞭解清楚,所有檔的目錄樹如下所示:

謝謝閱讀!

如有侵權請聯繫小編刪除!

代碼運行結果:

已經提到過,“熱門”目錄和“新上榜”目錄下代碼的結構相同,所以以上代碼稍作修改完全可以爬取“熱門”下的文章,但我將“熱門”下爬取到的文章放在了一張表裡,大家可以自行嘗試。

前面介紹了從分析網頁源碼到爬取文章並將其保存在 MySQL 中的過程,如有不明白的,請務必看完前幾節的介紹:

編寫 models:存儲資料使用的欄位

編寫需要進行序列化的欄位:將欄位序列化為 JSON 的形式輸出

編寫 views:對資料進行的各種存取操作

編寫 URL:訪問 API 所使用的 URL

models 在上一節中已經寫好,此處不再贅述。

編寫需要進行序列化的欄位

編寫 views

ReadOnlyModelViewSet 自動提供了“唯讀”方法,然後按時間排序取出資料庫中相應數量的文章。

編寫 URL

使用 Router 類可以自動生成 URL,我們需要做的僅僅是正確的註冊 View 到 Router中:

再次訪問 api 介面 http://222.24.63.118:8080/。

就已經可以爬取簡書全站的文章做成 API,並且可以部署上線了。但是我對 Docker 這個很火的東西非常感興趣,前段時間學了 Docker 的基本操作,正好可以用上。這也時我第一次用 Docker 部署 Django 應用,若有不正確的地方,還望指出。

使用 Docker 部署 Django 應用程式

到此,所有容器的創建過程都已經瞭解清楚,所有檔的目錄樹如下所示:

謝謝閱讀!

如有侵權請聯繫小編刪除!