Python 爬取接口数据时遇到的一些疑问
初学 Python
-
爬取接口数据 v1, v2 两个接口
v1 是商品数据 (一次请求得到所有商品数据)
v2 是商品详情数据(需要 v1 的商品 ID 参数请求得到)
for 循环请求 筛选并合并 v1 数据得到 v3 -
分析 组装数据 然后导入数据库
是全部请求组装完数据,再插入数据库
还是一次组装一次插入?
这个数据量有点大 比较耗时 是要用多线程吗? 怎么解比较好
Python 爬取接口数据时遇到的一些疑问
如果只是写脚本的话,请求用异步,数据库操作用异步,python 不要想线程 如果框架的话,基本上请求异步做掉了,只要数据库异步就好了 推荐直接 aiohttp 请求,数据用用 aio-libs 下的
分组批量插入
比如一次插入 500 条
进阶版:
待插入数据达到 n 条,执行插入
处理队列为空——也就是暂时不会有更多需要插入的数据,执行插入
数据多大量
首先这是一个爬虫策略的问题,假设 V1 接口返回的是一个 list of ID 那么 V1 接口的访问量会远低于 V2 接口,从稳定性和反-反爬虫的角度来说,我建议 V1,V2 分开处理,即 V1 获取所有商品 ID 并保存在本地后,再来通过 V2 获取商品详情,可以保证如果出了什么错后可以断点续爬(已经爬取的 ID 标记字段)。体量很大的话对于 V1,V2 都可以 网络 IO 和数据库 IO 做异步操作。
赞同这种方式,v1 请求一次得到 ID,存起来,然后 v2 用多线程,每请求一次插入一次数据,并且把插入过的 ID 记录下来,用日志就行,如果中途出现问题,再将记录过的 ID 和 V1 得到的 ID 进行比对,继续插入剩余的 ID
v1 v2 两个接口是 api 吗?还是说你自己的爬虫去爬数据?

