V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yoke123
V2EX  ›  Python

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

  •  
  •   yoke123 · 2018-05-15 12:28:04 +08:00 · 3098 次点击
    这是一个创建于 2386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初学 Python

    1. 爬取接口数据 v1, v2 两个接口

      v1 是商品数据 (一次请求得到所有商品数据)

      v2 是商品详情数据(需要 v1 的商品 ID 参数请求得到)
      for 循环请求 筛选并合并 v1 数据得到 v3

    2. 分析 组装数据 然后导入数据库

    是全部请求组装完数据,再插入数据库
    还是一次组装一次插入?

    这个数据量有点大 比较耗时 是要用多线程吗? 怎么解比较好

    6 条回复    2018-05-15 17:52:04 +08:00
    luzhongqiu
        1
    luzhongqiu  
       2018-05-15 12:55:22 +08:00
    如果只是写脚本的话,请求用异步,数据库操作用异步,python 不要想线程
    如果框架的话,基本上请求异步做掉了,只要数据库异步就好了
    推荐直接 aiohttp 请求,数据用用 aio-libs 下的
    1800x
        2
    1800x  
       2018-05-15 15:03:16 +08:00 via Android
    分组批量插入
    比如一次插入 500 条

    进阶版:
    待插入数据达到 n 条,执行插入
    处理队列为空——也就是暂时不会有更多需要插入的数据,执行插入
    ycz0926
        3
    ycz0926  
       2018-05-15 15:09:18 +08:00
    数据多大量
    ml1344677
        4
    ml1344677  
       2018-05-15 15:17:31 +08:00
    首先这是一个爬虫策略的问题,假设 V1 接口返回的是一个 list of ID 那么 V1 接口的访问量会远低于 V2 接口,从稳定性和反-反爬虫的角度来说,我建议 V1,V2 分开处理,即 V1 获取所有商品 ID 并保存在本地后,再来通过 V2 获取商品详情,可以保证如果出了什么错后可以断点续爬(已经爬取的 ID 标记字段)。体量很大的话对于 V1,V2 都可以 网络 IO 和数据库 IO 做异步操作。
    Hopetree
        5
    Hopetree  
       2018-05-15 16:16:43 +08:00
    @ml1344677 赞同这种方式,v1 请求一次得到 ID,存起来,然后 v2 用多线程,每请求一次插入一次数据,并且把插入过的 ID 记录下来,用日志就行,如果中途出现问题,再将记录过的 ID 和 V1 得到的 ID 进行比对,继续插入剩余的 ID
    soho176
        6
    soho176  
       2018-05-15 17:52:04 +08:00
    v1 v2 两个接口是 api 吗?还是说你自己的爬虫去爬数据?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.