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
pythonfan
V2EX  ›  Python

应该从哪几个方面着手优化一个秒杀器呢?

  •  
  •   pythonfan · 2014-10-29 11:29:16 +08:00 · 6031 次点击
    这是一个创建于 3705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在捣鼓一个秒杀器,想实现的功能就是监控网址抢拍。目前是页面定时刷新,然后用beautifulsoup来解析目标页面,过滤目标实现的(自动填单暂时还没实现)。监控多个网址的时候,就是循环这个列表,比如,解析一个页面2秒,10个地址跑完就是20秒。有没有其他更好的方案呢?或者目前这个方案想跑得更快,该如何优化呢?
    37 条回复    2014-10-31 11:19:29 +08:00
    pimin
        1
    pimin  
       2014-10-29 11:47:43 +08:00 via iPhone
    1.开多线程,每个查询一个线程。
    akira
        2
    akira  
       2014-10-29 11:51:31 +08:00
    每个地址单独开个线程来监控吧
    gs038538
        3
    gs038538  
       2014-10-29 13:29:31 +08:00 via Android
    关键是 抢的到
    pythonfan
        4
    pythonfan  
    OP
       2014-10-29 13:34:03 +08:00
    @pimin
    @akira
    多谢~
    pythonfan
        5
    pythonfan  
    OP
       2014-10-29 13:35:01 +08:00
    @gs038538 嗯,下一步准备做自动下单,每一步都要优化,否则真抢不到。。。
    limbo0
        6
    limbo0  
       2014-10-29 14:46:07 +08:00
    前几天那个说不要在淘宝拍卖的帖子难道在指楼主
    gs038538
        7
    gs038538  
       2014-10-29 14:57:23 +08:00
    @pythonfan 哈哈,是啊~~抢不到,再怎么优化不都是0吗?
    no13bus
        8
    no13bus  
       2014-10-29 15:18:44 +08:00
    @pythonfan celery
    imn1
        9
    imn1  
       2014-10-29 17:35:33 +08:00
    bs慢,想快首先换 lxml 或其他更快的dom解析,能用regex就更好,因为载入dom树比载入文本耗时
    exceloo
        10
    exceloo  
       2014-10-29 18:38:05 +08:00
    用js...
    chemzqm
        11
    chemzqm  
       2014-10-29 19:38:22 +08:00
    多进程多代理,要是同时开抢,你一个循环刚开始人家都抢完了
    20150517
        12
    20150517  
       2014-10-29 23:44:55 +08:00
    beautifulsoup光这处理速度就已经秒了,这玩意
    1. 要服务器离秒的服务器近
    2. 用python太慢,最好直接c语言
    TheLamb
        13
    TheLamb  
       2014-10-30 00:57:46 +08:00
    这双十一快到了,LZ加油,到时候给我们测试一下
    ClownQiang
        14
    ClownQiang  
       2014-10-30 11:20:11 +08:00
    同求测试。。。
    unfurl
        15
    unfurl  
       2014-10-30 11:51:14 +08:00
    没用的…
    关键时候页面能不能打开都是问题
    cdxem713
        16
    cdxem713  
       2014-10-30 16:58:03 +08:00
    感觉解析一个页面两秒太慢了,按理说不会这么长时间的,你的解析是指请求-响应-解析的一整个流程么?
    cdxem713
        17
    cdxem713  
       2014-10-30 16:59:34 +08:00
    开多线程,然后挂VPN不停自动切换VPN地址会快很多
    pythonfan
        18
    pythonfan  
    OP
       2014-10-31 00:19:21 +08:00
    @limbo0 哪个帖子?没看到啊
    pythonfan
        19
    pythonfan  
    OP
       2014-10-31 00:21:35 +08:00
    @gs038538 努力试了才知道嘛~最后如果秒不到,只能说技不如人了。。。
    pythonfan
        20
    pythonfan  
    OP
       2014-10-31 00:25:44 +08:00
    @no13bus celery还没用过,不知道是否适合这样的场景。。。
    pythonfan
        21
    pythonfan  
    OP
       2014-10-31 00:26:35 +08:00
    @imn1 多谢,到时换lxml 试试
    pythonfan
        22
    pythonfan  
    OP
       2014-10-31 00:29:18 +08:00
    @exceloo 单js能搞?
    pythonfan
        23
    pythonfan  
    OP
       2014-10-31 00:34:04 +08:00
    @chemzqm 要用代理么?我现在直接本机在跑。。。
    pythonfan
        24
    pythonfan  
    OP
       2014-10-31 00:37:12 +08:00
    @20150517 c语言不熟悉。。。只能先python试试看吧,服务器的话打算打听下,在同个机房租个空间跑程序,这样应该会快些吧。
    pythonfan
        25
    pythonfan  
    OP
       2014-10-31 00:40:14 +08:00
    @TheLamb 水平还太菜啊,跟专业秒家比,估计汤都没的喝,哈哈~
    pythonfan
        26
    pythonfan  
    OP
       2014-10-31 00:41:22 +08:00   ❤️ 1
    @unfurl 这个就看人品了,咱打不开,人家也打不开啊,哈哈
    pythonfan
        27
    pythonfan  
    OP
       2014-10-31 00:47:32 +08:00
    @cdxem713 之前不够严谨,随便举得例子,刚刚看了下,整个请求-响应-解析流程大概0.3-0.5秒的样子。请问不停自动切换VPN地址是为了啥呢?
    exceloo
        28
    exceloo  
       2014-10-31 09:01:01 +08:00
    @pythonfan 可以,油猴脚本,就是浏览器要一直开着
    exceloo
        29
    exceloo  
       2014-10-31 09:02:22 +08:00
    @pythonfan 你也可以用易语言,黑产链都用这玩意写秒杀器。
    unfurl
        30
    unfurl  
       2014-10-31 09:14:24 +08:00
    @pythonfan 我帮朋友写过抢nike限量发售的鞋子,用的是selenium,选的vps跟网站延迟5ms以内;不太热门的款式,成功率七八成,热门的鞋子…… 发售前一小时网页就几乎打不开了
    cdxem713
        31
    cdxem713  
       2014-10-31 09:56:20 +08:00
    @pythonfan 不换IP的话这么高的请求频率应该很容易被封吧,不太理解秒杀器的原理,好像和爬虫差不多?
    pythonfan
        32
    pythonfan  
    OP
       2014-10-31 10:13:37 +08:00
    @cdxem713 嗯,和爬虫类似啊,加个自动填单提交
    cdxem713
        33
    cdxem713  
       2014-10-31 10:19:21 +08:00
    @pythonfan 是爬虫的话,同一个IP并发请求太多肯定会被封的,之前做过稳定点的就是,开多个线程并发请求,然后隔几分钟暂停这些线程,切换VPN地址,再开始线程,这种就不容易被封了。
    pythonfan
        34
    pythonfan  
    OP
       2014-10-31 10:26:33 +08:00
    @exceloo 易语言应该还没python快吧?。。。
    pythonfan
        35
    pythonfan  
    OP
       2014-10-31 10:31:35 +08:00
    @unfurl 发售前一小时。。。这是大家都开始开挂的节奏啊。。。
    pythonfan
        36
    pythonfan  
    OP
       2014-10-31 10:38:10 +08:00
    @cdxem713 多谢,看来切换vpn也必须上啊,不过目前测试阶段还没被封,哈哈
    cdxem713
        37
    cdxem713  
       2014-10-31 11:19:29 +08:00
    @pythonfan 可以先试试大并发会不会被封,这个东西每个网站也有不同。这类垂直爬虫,我觉得解析速度比较次要,提高request/response的速度,然后在安全的前提下提高并发数才比较关键。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1131 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:35 · PVG 02:35 · LAX 10:35 · JFK 13:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.