iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

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

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

  • 分享至 

  • xImage
  •  

前情提要

昨天實戰了分析了 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
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言