iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

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

【Day 27】- 再爬一次 Dcard ?(實戰向 Dcard API 發出請求)

前情提要

昨天實戰了分析了 CDC 官網,並找到了一個 API 能夠查看確診人數,並寫個小程式向其發出請求。

開始之前

今天要實戰的是 Dcard 的網路爬蟲,可能有人有疑問,之前不是有用 Selenium 爬取過 Dcard 過嗎。這次要使用的是 Dcard 向外釋出的 API,我們能直接向其發出請求,便能直接取得文章。

雖然 Selenium 的優勢並不在速度,但直接向 API 請求比 Selenium 快上許多。

要使用的 Dcard API : https://www.dcard.tw/service/api/v2/posts

直接用網頁向其發出請求,會發現出現許多文章。

可以撰寫一個小程式向其發出請求。

import requests

if __name__ == '__main__':
    resp = requests.get('https://www.dcard.tw/service/api/v2/posts')
    print(resp.text)

使用 JSON 解析其字串,並將其轉存為 JSON file。

import requests
import json

if __name__ == '__main__':
    resp = requests.get('https://www.dcard.tw/service/api/v2/posts')
    json_resp = json.loads(resp.text)
    with open('Dcard_articles.json', 'w', encoding='utf-8') as f:
        json.dump(json_resp, f, indent=2,
                  sort_keys=True, ensure_ascii=False)

結語

今天使用了 Dcard 的 API,直接向 API 發出請求。用此方式來爬取 Dcard 文章十分快速,不需要使用 Selenium 模擬使用者滑動。

明日內容

明天會帶各位看一下常見的反爬蟲技術。

補充資料

Dcard API 使用說明 : https://blog.jiatool.com/posts/dcard_api_v2/

Dcard : dcard.tw/f


上一篇
【Day 26】- 分析衛生福利部疾病管制署(CDC)官網並取得確診者 API,並用小程式及時取得官方確診者數量(實戰分析網站向外請求 API 加快爬蟲節奏)
下一篇
【Day 28】- 這個驗證碼有點難破解(應對反爬蟲技術-驗證碼篇)
系列文
網路爬蟲,萬物皆爬 - 30 天搞懂並實戰網路爬蟲及應對反爬蟲技術30

尚未有邦友留言

立即登入留言