请选择 进入手机版|继续访问电脑版
发新帖

Python 爬取接口数据的一些疑问

[复制链接]
4693 6

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
初学 Python

  • 爬取接口数据 v1, v2 两个接口
    v1 是商品数据 (一次请求得到所有商品数据)
    v2 是商品详情数据(需要 v1 的商品 ID 参数请求得到)
    for 循环请求 筛选并合并 v1 数据得到 v3
  • 分析 组装数据 然后导入数据库
是全部请求组装完数据,再插入数据库
还是一次组装一次插入?
这个数据量有点大 比较耗时是要用多线程吗?怎么解比较好

举报 使用道具

回复

精彩评论6

luzhongqiu  注册会员  发表于 2018-5-16 18:07:25 | 显示全部楼层
如果只是写脚本的话,请求用异步,数据库操作用异步,python 不要想线程
如果框架的话,基本上请求异步做掉了,只要数据库异步就好了
推荐直接 aiohttp 请求,数据用用 aio-libs 下的

举报 使用道具

回复
1800x  新手上路  发表于 2018-5-16 18:14:58 | 显示全部楼层
分组批量插入
比如一次插入 500 条

进阶版:
待插入数据达到 n 条,执行插入
处理队列为空——也就是暂时不会有更多需要插入的数据,执行插入

举报 使用道具

回复
ycz0926  新手上路  发表于 2018-5-16 18:16:00 | 显示全部楼层
数据多大量

举报 使用道具

回复
ml1344677  新手上路  发表于 2018-5-16 18:19:58 | 显示全部楼层
首先这是一个爬虫策略的问题,假设 V1 接口返回的是一个 list of ID 那么 V1 接口的访问量会远低于 V2 接口,从稳定性和反-反爬虫的角度来说,我建议 V1,V2 分开处理,即 V1 获取所有商品 ID 并保存在本地后,再来通过 V2 获取商品详情,可以保证如果出了什么错后可以断点续爬(已经爬取的 ID 标记字段)。体量很大的话对于 V1,V2 都可以 网络 IO 和数据库 IO 做异步操作。

举报 使用道具

回复
hopetree  新手上路  发表于 2018-5-16 19:01:31 | 显示全部楼层
@ml1344677 赞同这种方式,v1 请求一次得到 ID,存起来,然后 v2 用多线程,每请求一次插入一次数据,并且把插入过的 ID 记录下来,用日志就行,如果中途出现问题,再将记录过的 ID 和 V1 得到的 ID 进行比对,继续插入剩余的 ID

举报 使用道具

回复
soho176  新手上路  发表于 2018-5-16 19:16:18 | 显示全部楼层
v1 v2 两个接口是 api 吗?还是说你自己的爬虫去爬数据?

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表