【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


<<:  Day30 - 总结

>>:  [Day 27] - React 前端串後端 - Cookie存取

npm
杂谈    

laravel 8 (一) 建立专案及资料库设定

安装专案 composer global require laravel/installer //将...

OpenStack Neutron 介绍 — OVS Provider Networks

本系列文章同步发布於笔者网站 上篇介绍了 Neutron 使用 Linux Bridge plug-...

【从实作学习ASP.NET Core】Day20 | 前台 | 建立前台页面

今天要完成商店的主要页面,基本上都是前端的工作,就是让网页看起来比较像样啦 但因为这方面我自己也不是...

Day8:原来机器学习这个词跟我想的不太一样

  这几天研究下来,发现有三个词汇很让人搞不懂,也就是人工智慧(Artifical Intellig...

Day_20 : 让 Vite 来开启你的Vue 之 watch & watchEffect

Hi Dai Gei Ho~ 我是Winnie~ 在今天文章中, 我们要来说的Composition...