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

话说大家写爬虫有用 python3 的嘛

  •  
  •   hardman · 2018-05-25 08:15:14 +08:00 via Android · 7308 次点击
    这是一个创建于 2372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几天学习写爬虫使用 py2 和 py3 但是使用 urllib 的时候问题 urllib2 用 python 获取异常但是使用 python3 的时候不是 urllib 和 urllib2 都打包成 urllib 了吗,结果死活调不了 urlerro,书上都是用 pytjon2 但是像 2 和 3 一起搞各位打来有没有好的方法。

    61 条回复    2018-06-05 16:31:40 +08:00
    lifeishort
        1
    lifeishort  
       2018-05-25 08:22:25 +08:00 via iPhone   ❤️ 1
    我大清亡了吗
    chesterzzy
        2
    chesterzzy  
       2018-05-25 08:27:04 +08:00
    合并了就文档啊。
    再说 Python3 没有了编码的后顾之忧,写起来不知道有多爽。
    再再说,不用 requests 吗?
    Sylv
        3
    Sylv  
       2018-05-25 08:44:25 +08:00 via iPhone   ❤️ 2
    提问请好好组织下语言和使用标点符号,否则只是浪费大家的时间。
    wplct
        4
    wplct  
       2018-05-25 08:53:15 +08:00
    requests 了解一下。不过我问一下,服务器怎么安装 python3 环境比较方便
    liwl
        5
    liwl  
       2018-05-25 08:55:22 +08:00
    提问请好好组织下语言和使用标点符号,否则只是浪费大家的时间。
    chengxiao
        6
    chengxiao  
       2018-05-25 08:57:27 +08:00
    各有优势吧
    用 2 写的话部署起来比较方便
    用 3 写的话不用处理那么多编码问题,3 部署起来稍微有些麻烦些
    vsomeone
        7
    vsomeone  
       2018-05-25 09:02:21 +08:00 via iPhone
    你这说的是中文吗…
    holajamc
        8
    holajamc  
       2018-05-25 09:06:25 +08:00   ❤️ 4
    难道还有用 Python2 的嘛?
    Jason0803
        9
    Jason0803  
       2018-05-25 09:08:23 +08:00
    一大串看的头晕
    sikariba
        10
    sikariba  
       2018-05-25 09:08:24 +08:00
    这年头还有用 py2 的吗。。。
    BingoXuan
        11
    BingoXuan  
       2018-05-25 09:14:38 +08:00 via Android
    @sikariba
    我们公司也是被逼着用 2,毕竟客户内部也是用 2。而且客户还是做系统的
    newmind
        12
    newmind  
       2018-05-25 09:15:43 +08:00
    标题改为"话说大家写爬虫有用 python2 的嘛"就正常多了
    wplct
        13
    wplct  
       2018-05-25 09:17:37 +08:00
    公司用的是 2.因为部署方便,也没有升级的动力,
    timothyye
        14
    timothyye  
       2018-05-25 09:18:14 +08:00 via Android
    直接 3 吧,毕竟 2 马上要退出舞台了
    Qzier
        15
    Qzier  
       2018-05-25 09:22:55 +08:00 via iPhone
    python 2 不是快淘汰了吗?大批的库已经放弃 python2 ?
    locktionc
        16
    locktionc  
       2018-05-25 09:25:25 +08:00
    一直用 Python 3 写爬虫。
    soho176
        17
    soho176  
       2018-05-25 09:34:08 +08:00
    @chengxiao 那么多大神,为啥就不能弄出来一个简单的部署的办法那,比如来个一键部署之类的,想不明白啊
    silhouette
        18
    silhouette  
       2018-05-25 09:42:27 +08:00 via Android
    8012 年了
    fy
        19
    fy  
       2018-05-25 09:48:44 +08:00
    大清亡了吗? urllib 这几个库我们不都应该默认无视吗?
    lfzyx
        20
    lfzyx  
       2018-05-25 09:51:40 +08:00
    myyou
        21
    myyou  
       2018-05-25 09:56:42 +08:00
    @wplct 用 pyenv
    soho176
        22
    soho176  
       2018-05-25 09:59:10 +08:00
    作者:alexsunmiu
    链接: https://www.zhihu.com/question/38081354/answer/76689956
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    Python 应用的部署是一个很大的话题,至少是比较复杂的事情,现行的方案大多只是解决了某一方面的问题,或者把某个复杂的问题变成了另一个复杂的问题(或另一种复杂)罢了。抛砖引玉,为什么 Python 应用的部署会成为一个问题?这里暂时只谈服务端部署,毕竟 Py 目前在服务端的应用还是居多,PyQt 之流暂不讨论。讨论时主要与 PHP 与 Java 做比较,Ruby 高度类似 Py 不参与,GoLang 等则会编译至二进制可执行文件,可比较性不大。同时的同时,这里。。。只挖坑不管埋,下面这些问题,我也没想明白,尚未找到一个万全之策。那么,为什么 Python 应用的部署会成为一个问题呢?首先的首先,Python 服务端应用的部署处于一个两难的境地,既不像 PHP 那样丢文件到服务器就行,也不像 Java 那样有个标准的规范可以直接打包到 war。造成了部署复杂这一固有印象,同时另一些问题下,导致这个问题更加复杂。1,操作系统问题,PHP 可以非常容易的与 IIS 共处,但 Python 的 IIS 库(虽然貌似只支持 django )似乎已经烂尾了,几乎已经没有人在 windows 下做生产部署了,同时去看看各云服务器厂商,观察他们的 windows server 的销量就知道这个问题有多严重了。但同时 J2EE 在 windows 下依然可以很欢快,很多人认为 PHP 比 Py 更流行的原因在于 windows 下的执行环境。2,需求的多样化加剧了这个问题,py 生态中对于性能的追求很过分,有几多 Py web 框架数得过来吗,每个 web 框架的运行环境甚至原理完全不一样,举栗子,wsgi、uwsgi、fastcgi 都是可以的,django、flask、web.py 、bottle 这些鼎鼎大名的 web 框架还只能简单归于一类,tornado、twisted web 等再归于一类,部署他们与部署 wsgi app 完全不同的,好复杂。甚至的甚至,一个 Web 开发我们将之拆分成 framework、template engine,ORM 等等好些部分,谈到这个问题我只想说,我想静静。
    jinyu121
        23
    jinyu121  
       2018-05-25 10:22:27 +08:00
    尽信书不如无书

    不如看书后照着自己的想法先 XJB 撸一通,然后找其他资料慢慢完善。

    比如这个 [从零开始写一只爬虫 系列]( https://haoyu.love/blogtag/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%86%99%E4%B8%80%E5%8F%AA%E7%88%AC%E8%99%AB)

    而且……为啥要用 Windows10 …… 人家 Windows98 多流畅啊,资源消耗又少……
    ChenHeliar
        24
    ChenHeliar  
       2018-05-25 10:27:49 +08:00 via Android
    用 requests 吧,我入手就是 py3
    whoami9894
        25
    whoami9894  
       2018-05-25 10:32:45 +08:00 via Android
    什么?我大清亡了?
    ryanz91
        26
    ryanz91  
       2018-05-25 10:36:05 +08:00
    requests 挺好的
    cloverii
        27
    cloverii  
       2018-05-25 10:37:20 +08:00 via Android
    用 requests 吧…公司还在用 2 估计是迁移成本太高…心累
    lanpong
        28
    lanpong  
       2018-05-25 10:40:29 +08:00
    @wplct #4 pyenv 了解一下
    ilyh
        29
    ilyh  
       2018-05-25 10:49:15 +08:00
    request-html 挺好用的啊, 只支持 py3.6+
    manzhiyong
        30
    manzhiyong  
       2018-05-25 10:58:04 +08:00
    很少有用 3 的,用 2 吧
    hubqin
        31
    hubqin  
       2018-05-25 11:02:09 +08:00
    一直用 py3+requests+pymysql
    jyf
        32
    jyf  
       2018-05-25 11:47:16 +08:00
    最近给公司写的项目一律用 py3
    不知道楼上说的部署问题是啥问题 我真没碰到有部署难的 应该说 跟 py2 没区别啊 装个 pip3 依赖放 requirements.txt 里 讲究的人还要弄个 virtualenv 还有啥?
    chengxiao
        33
    chengxiao  
       2018-05-25 11:55:28 +08:00
    @jyf
    很多系统上是没有 3 的 pip 的 还要重新整 3 的环境,2 是连 virtualenv 都不用的 放机器上直接就写个 sh 就能一直跑了
    相比之下多了不少步骤的
    wwwd0g
        34
    wwwd0g  
       2018-05-25 12:09:14 +08:00
    @ChenHeliar
    @locktionc
    @wplct
    你们用 requests 的时候,网页读取超时如果解决的?不是链接超时,timeout 默认是链接超时,timeout=(3,9),这样是链接超时 3 秒,读取超时 9 秒,但是我自己测试发现读取超时没啥卵用诶
    tulongtou
        35
    tulongtou  
       2018-05-25 12:13:52 +08:00 via iPhone
    写爬虫还有直接用 urllib 的?
    panpanpan
        36
    panpanpan  
       2018-05-25 12:15:58 +08:00 via iPhone
    都 8102 年了,还在 py2 ?写爬虫当然用 scrapy 啊
    ly529
        37
    ly529  
       2018-05-25 14:55:26 +08:00
    我用的 2,不知道别人
    Ailoli
        38
    Ailoli  
       2018-05-25 14:57:44 +08:00 via Android
    学的就是 3
    exkernel
        39
    exkernel  
       2018-05-25 15:42:42 +08:00
    py3 的 aiohttp 多好用
    JCZ2MkKb5S8ZX9pq
        40
    JCZ2MkKb5S8ZX9pq  
       2018-05-25 16:09:56 +08:00
    自己写了个 request,把常用的功能整合进去,json 完整性、返回错误排除、自动重新请求、代理服务器轮换等等,每次爬用自己的一套。从 2 换到 3 没费太大功夫。
    beforeuwait
        41
    beforeuwait  
       2018-05-25 16:17:23 +08:00
    入门时候是 py2,去公司开始生产就是 py3
    tujin
        42
    tujin  
       2018-05-25 17:24:16 +08:00
    8012 年不用 3 ?
    teaser
        43
    teaser  
       2018-05-25 17:44:01 +08:00
    现在还是 2...
    ballshapesdsd
        44
    ballshapesdsd  
       2018-05-25 17:47:06 +08:00
    语言表达能力堪忧
    wenzhoou
        45
    wenzhoou  
       2018-05-25 18:59:29 +08:00 via Android
    干嘛不用 docker
    weixiangzhe
        46
    weixiangzhe  
       2018-05-25 20:46:05 +08:00
    大学二级 python 都是 3 了。。。
    Hopetree
        47
    Hopetree  
       2018-05-25 20:50:47 +08:00
    不好意思,我只会 requests,只会 Python3,虽然我发现公司的代码还是 Python2
    julyclyde
        48
    julyclyde  
       2018-05-25 22:38:27 +08:00
    @soho176 不给你一键部署其实是节省你的时间啊。趁早放弃
    aaronzjw
        49
    aaronzjw  
       2018-05-25 22:49:07 +08:00 via iPhone
    建议看看 k 神的 requests,然后回来重新组织下语言
    encro
        50
    encro  
       2018-05-25 22:59:44 +08:00
    django,scripy,requests,bs 都支持 py3,还有什么理由不用呢?
    encro
        51
    encro  
       2018-05-25 23:02:01 +08:00
    @soho176 用过 python 吗?
    mingyun
        52
    mingyun  
       2018-05-25 23:42:03 +08:00
    肯定用 py3 了 没有烦人的编码问题
    zyxbcde
        53
    zyxbcde  
       2018-05-26 02:07:34 +08:00 via Android
    urllib2 ??这玩意居然还有人用来写爬虫
    codeeer
        54
    codeeer  
       2018-05-26 02:16:49 +08:00 via iPhone
    @wplct 忠告,用 pyenv 吧,不要去升级系统的 python2
    ClutchBear
        55
    ClutchBear  
       2018-05-26 03:01:41 +08:00
    用 python2 的,
    不知道你们对 3.6 的 type hints,也就是类型注解怎么看
    反正我在的小公司, 强制使用这个.
    定义变量 函数返回值一律使用类型注解.
    wizardoz
        56
    wizardoz  
       2018-05-26 12:06:58 +08:00
    为什么大家都推荐 requests 而不是 scrapy ?
    RealGM
        57
    RealGM  
       2018-05-26 12:43:04 +08:00
    别用 2 了 马上不支持维护更新了
    julyclyde
        58
    julyclyde  
       2018-05-26 12:53:59 +08:00
    @wizardoz 这俩完全不是一个方面的东西。大家推荐 requests 并不代表不推荐 scrapy,都是你自己脑补的
    nitro123
        59
    nitro123  
       2018-05-26 16:33:33 +08:00
    @chengxiao py3 部署难在那里?
    jyf
        60
    jyf  
       2018-06-05 16:30:47 +08:00
    @chengxiao 没有 pip3 你不能装一个么?
    一行命令的事 你应该不是穿越过来的吧

    ```
    sudo apt install -y pip3 python3-dev
    ```

    其他系统也是大同小异啊 我的手机上都直接支持
    jyf
        61
    jyf  
       2018-06-05 16:31:40 +08:00
    @panpanpan 难道不是 selenium?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2462 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:56 · PVG 23:56 · LAX 07:56 · JFK 10:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.