应该从哪几个方面着手优化一个秒杀器呢? - V2EX
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 6421 次点击
    这是一个创建于 4001 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在捣鼓一个秒杀器,想实现的功能就是监控网址抢拍。目前是页面定时刷新,然后用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     Solana     2691 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:21 PVG 15:21 LAX 00:21 JFK 03:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86