Python 爬虫改成 go,性能提高 5 倍? - 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
sagaxu
V2EX    Python

Python 爬虫改成 go,性能提高 5 倍?

  •  
  •   sagaxu 2018-12-03 09:28:17 +08:00 via Android 18835 次点击
    这是一个创建于 2505 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2018-12-03 12:50:37 +08:00
    原作被你们评论到 404 了,神马情况
    107 条回复    2018-12-04 11:02:50 +08:00
    1  2  
    chanchan
        1
    chanchan  
       2018-12-03 09:34:00 +08:00
    别问问就是 python 牛逼
    aa514758835
        2
    aa514758835  
       2018-12-03 09:34:32 +08:00
    萌新不懂,我也看了这篇文章,我记得 python 好像也可以并行处理吧~
    notreami
        3
    notreami  
       2018-12-03 09:38:26 +08:00
    没加代理,无所谓性能
    zarte
        4
    zarte  
       2018-12-03 09:40:18 +08:00
    首先静态语言应该会好点,但是没专门对比过。
    然后他这个有筛选的爬应该会用到正则或者字符串匹配。
    正则这个对时间影响很大具体语言自带的都不一样。
    lekai63
        5
    lekai63  
       2018-12-03 09:40:26 +08:00
    爬虫瓶颈不是应该在网络这块么?
    感觉预期应该是 go 和 python 差不多速度才对呀。。
    windfarer
        6
    windfarer  
       2018-12-03 09:42:12 +08:00
    python 代码质量不高,同步写数据库,能快就怪了
    gesse
        7
    gesse  
       2018-12-03 09:42:29 +08:00
    爬虫很大时候性能瓶颈在网络

    就像如果不换固态硬盘,cpu 在一定范围内, 整体性能是差不多的。
    quickma
        8
    quickma  
       2018-12-03 09:45:47 +08:00
    别问,问就是人生苦短,我用 python
    congeec
        9
    congeec  
       2018-12-03 09:48:42 +08:00 via iPhone   2
    我曾经也以为爬虫的瓶颈在 io,直到我用了 scrapy,CPU 常年某个核心 100%。单核异步,没法优化。

    python 单核异步一条道走到黑,gvr 老爷子们以为大家都只写 web 后端呢? python 要死在这条道上
    kidlfy
        10
    kidlfy  
       2018-12-03 09:48:45 +08:00
    他数据库存储是同步的呀...说实话 我还没见过 scrapy 存数据库 这个步骤是写在 spider 里的....
    chengxiao
        11
    chengxiao  
       2018-12-03 09:48:54 +08:00
    爬虫的性能.....难道不是看代理速度么?
    cuixiao603
        12
    cuixiao603  
       2018-12-03 09:50:19 +08:00 via Android
    别问 问就是你这个 python 水平不行
    congeec
        13
    congeec  
       2018-12-03 09:51:54 +08:00 via iPhone
    2008 年到现在,也就 asyncio 亮眼点,JIT、GIL 毫无改进,一点诚意都没有(不要跟我说 pypy,cffi 烦死人)。人家 ruby2.6 都有官方 jit 了。
    so1n
        14
    so1n  
       2018-12-03 09:52:56 +08:00
    在知乎的评论不堪入目
    memorycancel
        15
    memorycancel  
       2018-12-03 09:53:14 +08:00
    瓶颈在被爬取网站的反扒机制,你爬虫性能再好都没用,甚至适得其反。
    bonfy
        16
    bonfy  
       2018-12-03 09:54:38 +08:00
    @memorycancel 适得其反 精髓了
    gamecreating
        17
    gamecreating  
       2018-12-03 09:56:00 +08:00
    是的,用 C 多线程写 速度更快.
    但是你们追求的采集快 还是开发快呢?
    场景不同 不能一概而论
    poplar50
        18
    poplar50  
       2018-12-03 09:57:36 +08:00 via Android
    网络 io 觉得 python 并不虚
    agdhole
        19
    agdhole  
       2018-12-03 10:06:53 +08:00
    知乎核心业务 python 转 go: https://zhuanlan.zhihu.com/p/48039838
    qwertty01
        20
    qwertty01  
       2018-12-03 10:10:32 +08:00
    @memorycancel 爬的越快,封的越快
    keysona
        21
    keysona  
       2018-12-03 10:16:50 +08:00
    go 抓取内容,python 解析入库。
    myyou
        22
    myyou  
       2018-12-03 10:17:05 +08:00
    别问问就是 python 不行,跟人是不是彩笔,是不是用的不对没有关系
    lxy42
        23
    lxy42  
       2018-12-03 10:17:47 +08:00   3
    各位还是看了代码再发表评论吧,Python 爬虫竟然是一条一条数据同步保存到 MySQL。
    https://github.com/lidingke/go_python_crawler_benchmark/blob/master/py_get.py#L20-L31

    另外,把 mysql 换成 mysqlclient 速度又能快不少。
    GoLand
        24
    GoLand  
       2018-12-03 10:25:54 +08:00   7
    现在有些人会写个 `print("hello world")` 就觉得自己掌握了 Python,自己不会用还怪语言慢,怪就算了,还到处张扬自己的愚蠢,写这文章的人是天生缺关注想要博关注?这不是在搞笑吗.........代码都经不起人 review 说个 jb。
    ivechan
        25
    ivechan  
       2018-12-03 10:28:16 +08:00
    div class="reply_content">这个对比,我也是服气的。
    一个框架, 一个手写调度,起码得保证代码的基本逻辑一致才有比较的意义吧?
    看前面,居然还有 Python 同步保存到数据库这种操作。

    多说一句,Python 是性能差,那也得看场景啊,像(大多数)爬虫都是 I/O 密集型的任务,Python 毫无疑问可以胜任。
    Vegetable
        26
    Vegetable  
       2018-12-03 10:31:38 +08:00
    这对比好蛋疼...玛莎拉蒂能跑三百,我有必要买吗?
    ipwx
        27
    ipwx  
       2018-12-03 10:32:03 +08:00
    @lxy42 单核带锁用 MySQL 确实是巨大黑点。

    但是话说回来,如果你用很 advanced 的技术优化了 Python 程序(我倒也是想到了很多方案,不过没做过),那么 Python 唯一一条远好于 Go 的优势、写起来容易,不是不成立了吗?就算你作为资深 Python 程序员能够优化到这种程度,但是那也只是和 Go 平起平坐而已吧。。。

    利益相关:不会 Go,Python 老手吧。。
    www5070504
        28
    www5070504  
       2018-12-03 10:33:32 +08:00   2
    ... 不知道说啥好 这种 io 任务 时间大多浪费在 io 等待上 谈什么语言性能 在搞笑吧
    NaVient
        29
    NaVient  
       2018-12-03 10:34:57 +08:00
    难道你们都没看到源码里 爬一条就对数据库进行 IO 的神操作吗?
    xpresslink
        30
    xpresslink  
       2018-12-03 10:35:18 +08:00   1
    最重要的问题是:
    爬虫的最大痛点不是速度,而是突破反爬。
    其次的痛点,50%以上的爬虫任务是一次性的。
    另外不断尝试方案和调试是爬虫开发花费的主要精力。
    最后是爬虫相关的库和生态丰富程度是必然要考虑的。


    从这些点上来说作为不单是 Go,所有静态语言的来写爬虫是相对比较难受的。动态语言 Python 几乎就是爬虫的同义词,这不是偶然的。
    est
        31
    est  
       2018-12-03 10:41:23 +08:00   1
    把 scrapy 按在地上揍了一顿。不过瘾,怎么办?把 python 放进标题里。
    wwg1994
        32
    wwg1994  
       2018-12-03 10:45:12 +08:00
    @est 6666666
    nuansediao
        33
    nuansediao  
       2018-12-03 10:46:41 +08:00
    才快 5 倍,算不上吊打。。。也不够唬人,至少提高个几十倍的吧。
    wangxiaoaer
        34
    wangxiaoaer  
       2018-12-03 10:46:58 +08:00
    说实在的,感觉这种评价参考意义并不大,scrapy 是一个大的爬虫框架,文中的 go 应用算是一个定向爬虫,功能复杂性没法比。如果不基于 scrapy,和 go 一样重写一个定向抓取的应用,相互比对,才有意义吧。
    lxy42
        35
    lxy42  
       2018-12-03 10:47:02 +08:00
    @ipwx #27 过早的优化是万恶之源。如果项目一开始就对性能(实时性)有非常高的要求,那么 Python 确实不是首选。如果一开始对性能没有很高的要求,选择 Python 无疑可以提高开发速度,后期遇到性能问题,也是可以通过 C 扩展等其它手段去优化。
    clino
        36
    clino  
       2018-12-03 10:47:21 +08:00
    文章作者看到 11 分 和 45 秒 这种级别的差异就没有怀疑一下自己的代码写法吗?
    何况这又不是 CPU 密集型的
    kaohaonan6666
        37
    kaohaonan6666  
       2018-12-03 10:55:28 +08:00
    IO 密集型 你用 c 写 提高幅度也不大
    locoz
        38
    locoz  
       2018-12-03 10:57:21 +08:00 via Android
    不存在的,真的写起来的时候这种简单网站的简单需求根本不需要用框架,requests+多进程或者 asyncio+aiohttp 怼就完事了,整个代码写下来最多就十几行。
    跑起来之后大部分时间都在等待网络 io,这需求又没有要对数据做预处理,速度根本差不了多少,所以开发时间和爬的时间加起来还是 Python 比较快
    xpresslink
        39
    xpresslink  
       2018-12-03 11:04:32 +08:00
    @nuansediao 当年有个人对比了 C 和 Python 写的空循环性能,得到了比这个厉害的结论。
    hpeng
        40
    hpeng  
       2018-12-03 11:10:26 +08:00 via iPhone
    打个比喻,约等于用 py 写睡眠排序,跟用 go 写快排,然后说吊打…
    tt67wq
        41
    tt67wq  
       2018-12-03 11:13:23 +08:00
    这种人也算程序员系列?
    est
        42
    est  
       2018-12-03 11:17:41 +08:00
    @clino CPU 密集型的,要吊打 MKL 还得颇费一番功夫


    ( C++ 巨牛除外)
    stackexplode
        43
    stackexplode  
       2018-12-03 11:18:12 +08:00
    一天到晚研究鄙视链的人,水平真的。。
    zhongyiio
        44
    zhongyiio  
       2018-12-03 11:21:27 +08:00 via Android
    话说爬虫主要看对方的性能吧,你性能再高,对方一爬就挂,哈哈哈
    2225377fjs
        45
    2225377fjs  
       2018-12-03 11:24:08 +08:00
    python 确实慢这是客观存在的,执行效率上与 golang 存在明显的差距。
    只将爬虫当成是 IO 密集型的,也多半是小白
    congeec
        46
    congeec  
       2018-12-03 11:25:23 +08:00
    @est 我都直接调用 MKL
    @zhongyiio 刚开始用写爬虫不懂事儿,挂过几个小网站。后来有人性了
    hujianxin
        47
    hujianxin  
       2018-12-03 11:26:33 +08:00
    @GoLand 哈哈哈,没错
    qsnow6
        48
    qsnow6  
       2018-12-03 11:34:58 +08:00
    IO 密集型的,扯再多也没鬼用;
    scrapy 每分钟单机单核超过 3000 请求 /分钟,这速度平时做定向爬虫根本都用不上。分分钟被服务器拉黑,不拉黑也抓挂了。

    如果还有杠精在这扯,说明平时接触爬虫不够深入。
    rb6221
        49
    rb6221  
       2018-12-03 11:37:30 +08:00
    文章看不了了?没有知识的荒原
    brucedone
        50
    brucedone  
       2018-12-03 11:41:16 +08:00
    https://github.com/lidingke/go_python_crawler_benchmark/blob/master/py_get.py ,看到了熟悉的 lock,也不知道这个该怎么说了。
    wangxiaoaer
        51
    wangxiaoaer  
       2018-12-03 11:43:07 +08:00
    @janus77 #49 你们不要这样,作者估计受不了删文章了吧。
    xpresslink
        52
    xpresslink  
       2018-12-03 11:44:22 +08:00
    @janus77 我刚发一条打脸评论,结果。。。
    Keyes
        53
    Keyes  
       2018-12-03 11:47:19 +08:00
    @xpresslink 结果来到了荒原 23333
    jjx
        54
    jjx  
       2018-12-03 11:52:12 +08:00
    一个编译型静态类型的语言 每天 就知道同一个解释型动态语言 比性能

    脸都放哪里去了
    tnt666666
        55
    tnt666666  
       2018-12-03 11:56:41 +08:00 via Android
    是的,go 是最吊的,吊打 Python
    wdv2ly
        56
    wdv2ly  
       2018-12-03 12:17:47 +08:00
    这不算啥,我写一个代理工具,在垃圾小鸡上跑,cpu 负载 60%左右,加密模块用 c “翻译”下,cpu 负载降到 2-3%,算下来效率提高了 20-30 倍
    Leigg
        57
    Leigg  
       2018-12-03 12:22:56 +08:00 via iPhone
    做爬虫,python 足够了,换再快的语言也没用,懂的人自然懂。
    labulaka
        58
    labulaka  
       2018-12-03 12:31:32 +08:00 via Android
    404 了
    qdzzyb
        59
    qdzzyb  
       2018-12-03 12:34:30 +08:00
    原文 404 了
    xiaqi
        60
    xiaqi  
       2018-12-03 12:37:31 +08:00 via Android
    当年,说 php 是世界最好的论坛炸开了锅。如今,说 Go 爬虫性能吊打 Python,论坛炸开了锅。

    文章的作者应该已经在和妹子约会了吧?
    fiht
        61
    fiht  
       2018-12-03 12:41:27 +08:00   4
    实习的时候写了将近一年的爬虫,大概有这么一点感悟。
    在做定向爬虫到时候,比如说抓一抓机票网站的价格,需要突破一些反爬虫机制,或者需要使用无头浏览器做渲染。这种场景下语言不存在性能瓶颈,瓶颈在于对方的服务器压力和反爬虫机制。这种场景适合使用 Python。
    但是在做广度爬虫的时候,Python 就不适用了,就像楼上讲的 scrapy 单核跑满的问题。在这个场景下使用 Python 会带来很多的问题,比如说为了解决只有单核跑完的问题就需要起多个 scrapy 实例,为了让这多个 scrapy 实例协同工作就需要引入一个消息队列,整个系统的耦合度就复杂了不少。用 golang 来做的话就方便很多。几个爬行时的 goroutine 和几个 pipeline 的 goroutine,整个系统就能稳定地运转起来。这是 Python 所不能达到的。
    DeWhite
        62
    DeWhite  
       2018-12-03 12:48:12 +08:00
    vdo
        63
    vdo  
       2018-12-03 12:51:40 +08:00
    老板不涨工资的话,能用 py 就用 py
    dbow
        64
    dbow  
       2018-12-03 12:51:40 +08:00
    不用 scrapy 就好了,python 写的 event loop 也能轻松做到 1w/s 请求。
    觉得 python I/O 不行是水平问题。
    xhp281
        65
    xhp281  
       2018-12-03 13:06:58 +08:00
    RqPS6rhmP3Nyn3Tm
        66
    RqPS6rhmP3Nyn3Tm  
       2018-12-03 13:13:37 +08:00 via iPhone
    爬虫最困难的不是研究反爬机制吗,io 我觉得不是最重要的因素
    Linxing
        67
    Linxing  
       2018-12-03 13:41:11 +08:00
    并发有什么了不起的 Python 不支持?
    sgissb1
        68
    sgissb1  
       2018-12-03 14:10:38 +08:00
    爬虫玩过一段时间,也在有几个稳定爬取的地方。

    也用 scrapy,用 python 写。python 性能好不好不好讲,主要是每次启动 scrapy 太慢了(要生成 pyd 缓存),另外熟悉了 scrapy 后,做一下简单爬虫还是可以的,做复杂的(比如怕动态页面)就很难受了,需要引入其他解析库( scrapy 自带那几个基本不够用),因为是 python 菜鸡,感觉调起爬虫代码来,很是难受。
    marcushbs
        69
    marcushbs  
       2018-12-03 14:18:22 +08:00
    用过 scrapy/portia/puppeteer,遇到的有效反爬机制有两种:
    1. 封 IP
    2. captcha
    第一个只能用大规模部署的有独立 ip 的爬虫网络来解决,interval 的设置和数据存储 /合并需要有效调度;
    第二个颇为复杂,取决于 captcha 的设计:简单的识图可以通过一些库甚至 ml 来解决(比如 V2EX 的登录认证码ε=ε=ε=┏(ロ;)┛); 12306 或者 google captcha 那种需要让人点选 9 张里 N 张甚至让人算个微积分的,可以用 headless chrome 的截图机制(甚至 copy/paste DOM 重现),另一头连通到类似 Amazon Mechanical Turk 人肉智能服务上,还要对正确率和审核手段做调整。

    随着爬与反爬的不断斗争,针对 captcha 的工具库会不断增大和复杂,但新反爬模式总可以通过连接人肉服务解决
    综上,爬虫主要就是解决 1.分布式调度 2.和人肉服务的对接。至于单点性能,基本不算问题。
    petelin
        70
    petelin  
       2018-12-03 14:33:47 +08:00
    要是趴下来直接扔到缓存里,或者扔到流里, 用 Python 是没问题.
    关键是, 你的业务就那么简单吗, 不需要解析吗? 单单一个解析是可以把 CPU 跑到 100%的好不好
    revol
        71
    revol  
       2018-12-03 14:38:00 +08:00
    @petelin 密集计算的部分当然用 C 扩展啊,xpath,beautifulsoup 之类的。反正绝对不会比 go 慢
    kakudesu
        72
    kakudesu  
       2018-12-03 14:59:53 +08:00
    别问,问就是 404
    karllynn
        73
    karllynn  
       2018-12-03 15:13:36 +08:00
    404 了,一般爬虫用 Python 肯定够了,Python 性能差你多开几个进程啊…
    tailf
        74
    tailf  
       2018-12-03 15:16:34 +08:00
    才五倍,应该分分钟五十倍啊
    geying
        75
    geying  
       2018-12-03 15:22:40 +08:00
    来看评论
    zhongyiio
        77
    zhongyiio  
       2018-12-03 15:25:33 +08:00 via Android
    @congeec 点赞有人性
    petelin
        78
    petelin  
       2018-12-03 16:21:26 +08:00 via iPhone
    @revol python 天下第一
    XIVN1987
        79
    XIVN1987  
       2018-12-03 16:25:49 +08:00
    @petelin
    数据分析有 numpy、pandas,matplotlib,sklearn 底层都是 C 写的,效率很高
    locoz
        80
    locoz  
       2018-12-03 16:31:37 +08:00   1
    locoz
        81
    locoz  
       2018-12-03 16:31:59 +08:00
    @locoz #80 原评论 -> 原文评论
    quqiuzhu
        82
    quqiuzhu  
       2018-12-03 16:41:29 +08:00 via Android
    人生苦短,我用 python。说的就是你们天天优化优化,老子自己写得爽就行了,性能不好多加几台机器就是。
    yc8332
        83
    yc8332  
       2018-12-03 16:58:18 +08:00
    性能瓶颈不是应该在数据库吗?
    rizon
        84
    rizon  
       2018-12-03 17:06:54 +08:00
    我不是很懂 python,但是 python 很火是毋庸置疑的,但是有件事我不明白,希望有大佬解答。
    既然 ython 是单核,性能有瓶颈,为什么还这么火?尤其是云计算方面,这个单核的问题不是问题吗?

    网上看到的描述


    贴一下 18 年 12 月的排行

    rockyou12
        85
    rockyou12  
       2018-12-03 17:09:02 +08:00
    @rizon python 可以多进程,多核也能利用起来。只是比 java、go 这些比起来写起来有点蠢。
    troywinter
        86
    troywinter  
       2018-12-03 17:11:34 +08:00
    @est cpu 密集型,numpy 和 c++不相上下,都是调 mkl 的库,没什么区别。
    xiaqi
        87
    xiaqi  
       2018-12-03 17:12:55 +08:00 via Android
    那些老说 python 性能渣的,你倒是用 go 写个比 python 的 numpy 性能更高的库出来呀?
    beforeuwait
        88
    beforeuwait  
       2018-12-03 17:13:56 +08:00
    @memorycancel 十分同意
    beforeuwait
        89
    beforeuwait  
       2018-12-03 17:16:34 +08:00
    @Leigg 来,握个爪
    qilishasha
        90
    qilishasha  
       2018-12-03 17:18:22 +08:00
    ……反正用到的地方有限,管你是什么语言,会什么我就用什么。
    qsnow6
        91
    qsnow6  
       2018-12-03 17:22:26 +08:00
    @rizon #84 首先,任何语言的性能都是有瓶颈的,得看具体的数值,不存在有一门语言能在单机状态下抗下天猫双 11 的流量。

    其次,python 止于大部分静态语言( C、GO ),确实性能没有他们的单机性能高,这是所有动态语言的劣势,先天的,为了 code 的易用性和效率,牺牲了部分性能。

    python 之所以能在这么多领域开枝散叶,很大程序上利益于他的易用性,随便敲几行代码,一个爬虫就写好了,不管管类型这些静态语言语法的束缚,简直太舒服了。
    xiaqi
        92
    xiaqi  
       2018-12-03 17:25:42 +08:00 via Android
    @rizon 再次超越 C++,话说今年年度编程语言不会是 Python 吧?
    qsnow6
        93
    qsnow6  
       2018-12-03 17:29:44 +08:00
    性能够用就好,经常看到建博客的,日均 IP 不到 200,却在发愁以后怎么面对千万级的并发,到底该选哪门语言
    est
        94
    est  
       2018-12-03 17:49:07 +08:00
    @rizon 就好比从来没出过城的人考虑买车承载式底盘 4wd 越野好不好的问题。。。
    lazyfighter
        95
    lazyfighter  
       2018-12-03 17:53:48 +08:00
    @qsnow6 没毛病 哈哈
    LawlietZ
        96
    LawlietZ  
       2018-12-03 18:06:48 +08:00
    怎么 404 了
    JCZ2MkKb5S8ZX9pq
        97
    JCZ2MkKb5S8ZX9pq  
       2018-12-03 18:07:28 +08:00
    看了楼上的评论,python 爬虫同时写入 mongo 的瑟瑟发抖……
    est
        98
    est  
       2018-12-03 18:08:08 +08:00
    @locoz 神 api。。。
    est
        99
    est  
       2018-12-03 18:09:29 +08:00
    @qilishasha

    > 为了 code 的易用性和效率,牺牲了部分性能。

    也不能完全这样说。主要是几个 core dev 不接受 给 CPython 提速的补丁。。。

    php7 你看那速度。。ruby3x3 你看那速度。。。就连 perl6 也提速了。


    p 家的,就剩 py 没把提速放到第一核心重点了。
    fiht
        100
    fiht  
       2018-12-03 18:35:23 +08:00
    @xiaqi 首先 Python 性能不如 go 是事实你得要承认... 才能继续这个对话
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     858 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 20:21 PVG 04:21 LAX 13:21 JFK 16: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