昨天實戰了分析了 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