iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
AI & Data

網路爬蟲,萬物皆爬 - 30 天搞懂並實戰網路爬蟲及應對反爬蟲技術系列 第 1

【Day 01】- 前言: 從 0 開始的網路爬蟲

前言

近年人工智慧與大數據十分熱門,其背後需要許多有效的資料,先不論 Data Tagging 的部分,網路爬蟲是個爬取有效資料的好方法,甚至大家常用的 google 搜尋引擎也是傳統爬蟲的一種。

事實上網路爬蟲能有許多方便的用途,像是你可以做一個搶票爬蟲不用讓你早起/熬夜搶票、能自動按讚的爬蟲讓你的朋友的貼文都多一個讚或是今天要整理一些下載連結、文章、股票甚至是串接 CDC API 讓你每天自動爬取 COVID19 每日確診數都是能透過簡單撰寫一隻爬蟲去做到的。

這次鐵人賽會使用 Python 這個語言來撰寫我們的爬蟲,歡迎各位沒寫過爬蟲且充滿興趣、有寫過但想了解更多種類或者是想看看如何繞過反爬蟲技術的讀者們能夠持續收看並訂閱本系列~

我是誰

暱稱: Vincent55

vincent55.tw

ncku csie 大一新生,之前有玩過競程,之後接觸 CTF ,最近在碰網路和 Minecraft Bot 的東西

參賽動機

  1. 寫鐵人賽蠻酷的。owo
  2. 想用這 30 的連續技術文章撰寫訓練我寫技術文章的能力。
  3. 去年 7 月擔任過網路爬蟲實習生,這一年來都有使用這項技術來使生活更加便利,這次鐵人賽想把一些經驗總結分享給讀者,從最基礎的 requests 到應對反爬蟲技術。

開始前需要會甚麼

只要有一台能運行作業系統的電腦就行了,會從 0 開始從語法介紹起,主要是以 Windows 系統為主使用 Python 語言,不是 windows 也不用緊張,爬蟲環境等問題都是大同小異的。

大綱

day 2~5 環境、基本 Python 語法

day 6~10 基本爬蟲初探

day 11~14 實戰(ptt 爬蟲、映像檔爬蟲)

day 15~17 資料持久化

day 18 selenium 介紹

day 19~24 實戰(Dcard 文章爬蟲、 Instargram 按愛心機器人、 Discord 自動留言爬蟲、搶票機器人)

day 25 串接 API

day 26~27 實戰(自動爬取大量狗狗/ 貓貓照片 、 CDC 確診數自動爬取)

day 28~29 常見反爬蟲技術與應對

day 30 結語

目錄

【Day 02】- 網路爬蟲環境設定(Python、pipenv、Vscode)
【Day 03】- Python 基礎操作與常見資料型態(整數、浮點數、布林值、字串、串列、元組、字典)
【Day 04】- Python 條件判斷與迴圈
【Day 05】- Python 字串操作(正規表達式 regexes 、原生基本操作)
【Day 06】- 聽說 F12 可以拿來駭入小恐龍? (網頁開發工具分析流量)
【Day 07】- 第一隻網路爬蟲要用什麼函式庫? (Requests)
【Day 08】- 有著資料清洗功能的 Requests-HTML
【Day 09】- 大家都愛的 BeautifulSoup
【Day 10】- 你的爬蟲是哪一類的? (網路爬蟲的類型)
【Day 11】- 還在 PTT 點擊已滿 18 歲? 帶上 cookies 吧!(實戰 PTT 爬蟲 1/3)
【Day 12】- 這頁爬完了,爬下一頁。PTT 爬好爬滿!(實戰 PTT 爬蟲 2/3)
【Day 13】- 用 JSON 儲存爬來的 PTT 文章。(實戰 PTT 爬蟲 3/3)
【Day 14】- 實戰爬取 Ubuntu ISO 映像檔下載網址
【Day 15】- 匯率什麼的。爬! (實戰匯率爬蟲 on chrome)
【Day 16】- 做 Excel 輸入數據到心累?消警告的服學輸入很繁瑣? 使用 openpyxl 來操作 Excel
【Day 17】- 手動更新匯率太麻煩了! 匯率爬蟲搭配 OpenPyXL 做到自動讀取&更新匯率!
【Day 18】- 像個使用者的爬蟲 Selenium
【Day 19】- 讓 Selenium 去 Dcard 上爬文! (實戰 Selenium 模擬使用者划手機 1/2)
【Day 20】- 讓 Selenium 去 Dcard 上自動向下捲動 (實戰 Selenium 模擬使用者划手機 2/2)
【Day 21】- 你的爬蟲還在用帳號密碼進行登入? 帶上 Session 吧!(實戰 Selenium 自動點擊 Instagram 好友貼文贊 1/2)
【Day 22】- 將朋朋的 Instagram 貼文全部按讚owo(實戰 Selenium 自動點擊 Instagram 好友貼文贊 2/2)
【Day 23】- 想用個人的帳號在 Discord 自動留言? 爬蟲能做到!(實戰 Selenium 在 Discord 文字頻道內留言)
【Day 24】- 用方便的 Postman 儲存或測試 API
【Day 25】- 什麼幾百張幾千張的貓貓圖片,戳一戳就結束了(實戰 requests 向 API 請求獲得回應)
【Day 26】- 分析衛生福利部疾病管制署(CDC)官網並取得確診者 API,並用小程式及時取得官方確診者數量(實戰分析網站向外請求 API 加快爬蟲節奏)
【Day 27】- 再爬一次 Dcard ?(實戰向 Dcard API 發出請求)
【Day 28】- 這個驗證碼有點難破解(應對反爬蟲技術-驗證碼篇)
【Day 29】- 應對反爬蟲技術-綜合篇
【Day 30】- 結語 : 從 0 開始的網路爬蟲


下一篇
【Day 02】- 網路爬蟲環境設定(Python、pipenv、Vscode)
系列文
網路爬蟲,萬物皆爬 - 30 天搞懂並實戰網路爬蟲及應對反爬蟲技術30

尚未有邦友留言

立即登入留言