首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

学 Python 不久,尝试写了个 instagram 爬虫,想问问大家的建议?

  •  
  •   waibunleung · 40 天前 · 2524 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    学 python 不久,尝试参照别的库写了个 instagram 爬虫,想问问大家的建议?

    link: https://github.com/luengwaiban/instagram-python-scraper

    按照自己感觉写的,望各位 python 大虾能指点一下,教练,我想变强~

    第 1 条附言  ·  39 天前
    不少同学都收藏了主题....还是希望大家看完之后给点评价,我现在有点盲头苍蝇的感觉...谢谢大家了~!
    第 2 条附言  ·  39 天前

    从v站过去了接近200人,大家都看了一下不说话,我很好奇为什么会这样...还是说我太唠叨了...(哭

    第 3 条附言  ·  37 天前
    看到大家在别的帖子讨论得这么热烈,好想他们也来这里讨论一下啊~啊~
    30 回复  |  直到 2019-06-13 11:29:03 +08:00
        1
    waibunleung   40 天前
    little cute one waiting for you masters~
        2
    dt2vba   40 天前
    厉害,感觉方法的命名很不错,简洁、规范
        3
    vkhsyj   40 天前
    写的不错,代码规范也挺好的,说实话不像新手写的
        4
    Northxw   40 天前
    老油条~
        5
    waibunleung   40 天前
    @vkhsyj 之前有写过一下 php,不过也不是很厉害,算是有一点编程基础,谢谢您的肯定
        6
    waibunleung   40 天前
    还是恳请大家提出一些改进的建议,我现在心里没什么底的,因为我之前没接触过 python 开发,也不知道这样写是否是好的方式,请大家不要吝啬批评和建议呀~
        7
    waibunleung   39 天前
    up 一下期待更多大佬进来指点~
        8
    claysec   39 天前 via iPhone
    都能直接写包了😂😂😂
        9
    claysec   39 天前 via iPhone
    能拜师吗(滑稽)
        10
    waibunleung   39 天前
    @claysec 噗...别啊大哥,我认真的,我在各位大佬面前不敢抬头啊~
        11
    tikazyq   39 天前 via iPhone
    可以用爬虫平台 Crawlab 来管理你的爬虫,https://github.com/tikazyq/crawlab
        12
    waibunleung   39 天前
    @tikazyq ok,谢谢你的推荐。另外关于我项目上的建议吗?
        13
    tikazyq   39 天前
    单个网站来说不错,可以考虑一下用同样的框架扩展到其他社交平台,这样就强大得多了
        14
    waibunleung   39 天前
    @tikazyq 谢谢你的建议,我会认真考虑一下的,十分感谢~!
        15
    fenghuang   39 天前
    楼主您好,能介绍一下整个开发流程吗?我现在写爬虫只写了一个 py 文件,感觉不成体系
        16
    nondanee   39 天前
    看了下 usage 感觉不像爬虫像 SDK 啊,要不你改个名吧😂
        17
    waibunleung   39 天前
    @nondanee 那我改成什么比较好?或者你印象中爬虫是怎么样的呢?
        18
    waibunleung   39 天前
    @fenghuang 首先要有大概的整体逻辑的设计,然后就是模块适当分离,然后公用的部分抽取一下,最后组合起来,大概是这样吧,如果觉得不清晰我们可以再交流。其实我在项目里面放了一个 design.md ,你可以看看~
        19
    BlackL   39 天前
    楼主你好,请问你的 InitializerModel 类中_is_auto_constructed 这个属性是起什么作用呢,因为整个类初始化的时候这个属性一直为 False,我也没在其他子类中见到过更改这个属性的,所以想问下这个属性的作用
        20
    Takamine   39 天前 via Android
    厉害,从分层到代码再到注释,都很漂亮阿。(。ò ∀ ó。)

    个人感觉硬是要“鸡蛋里面挑骨头”的话(别打我 233333 ),那我感觉可能不够 pythonic。

    可能我是想要看到 @property (干掉 Java 一般的 get,set ),
    一些内容返回可以跟 scrapy 返回到 middleware 层一样试试 yield,
    提到爬虫,那就什么 async/wait,线程池阿都换上去,
    异常有了,日志也不能缺,用装饰器加上些功能。


    各位别打我,我对楼主也是服气,楼主带我飞。_(:з」∠)_
        21
    waibunleung   38 天前
    @Takamine 赞啊!
    因为之前自己不是学 python 的,所以受别的语言的一些影响就把其他语言的一些东西带到过来了。所以写完之后自己也觉得不够 pythonic,才发了这个帖子希望有经验的大大来指点一下。
    谢谢你的建议,线程其实之前有考虑,但是没想好线程对应怎样的使用场景,因为 instagram 的接口的分页数据获取是采用游标的形式的,没办法像常规爬虫那样有规律地分页去安排不同线程去获取不同分页段的数据。不过如果是按照用户列表去爬取用户的 post 的话,以及下载用户媒体的时候,线程就可能可以起到作用了。
    另外我看了廖雪峰的博客,他建议是 进程 + async/await 的方式比使用线程高效。
    至于 @property 之前我试着用了一下,因为我项目里面大部分是 get,极少 set,如果我使用了 @property,我需要写 getter 和 setter,心里想着 set 可以直接通过 obj.key=value 的方式设置,那就没有太大的必要再写多一次 setter,在我看来 @property 在对某些属性有限制时的场景下比较有实际意义,普通场景下感觉用不用都可以,也不知道这样的想法是不是我还不够深入的原因,所以最后没有采用 @property
    日志这一块我不知道作为一个库加上日志是否合适,但是我会认真考虑~
    说了很多,就当是相互交流一下想法,真心谢谢你的建议,这正是我想看到的,十分感谢~QwQ
        22
    deleteDB   38 天前
    很用心 点个赞
        23
    fank99   38 天前
    写的很好 学习了
        24
    baojiweicn2   38 天前
    写的很不错。get_value / set_value 不够 pythonic,其他各个方面都蛮不错的。 楼上提到 async/await 确实是不错的。 @property 的表达方式。
        25
    waibunleung   38 天前
    @baojiweicn2 关于 get_value / set_value 不够 pythonic 这点,我在楼上给出了我的想法,不知道这样的想法是否合理?还是说使用 @property 会更好一点?

    我的想法:
    至于 @property 之前我试着用了一下,因为我项目里面大部分是 get,极少 set,如果我使用了 @property,我需要写 getter 和 setter,心里想着 set 可以直接通过 obj.key=value 的方式设置,那就没有太大的必要再写多一次 setter,在我看来 @property 在对某些属性有限制时的场景下比较有实际意义,普通场景下感觉用不用都可以,也不知道这样的想法是不是我还不够深入的原因,所以最后没有采用 @property
        26
    waibunleung   38 天前
    @fank99 还是有很多可以改进的地方,谢谢你的赞同~
        27
    waibunleung   38 天前
    @deleteDB 感谢鼓励!
        28
    waibunleung   38 天前
    @BlackL 是 _is_auto_construct 才对,还我找了好久的说。如果这个属性为 True,则在初始化这个对象时,如果对象里面有属性方法,则会调用逐个调用对象的属性方法
        29
    fenghuang   38 天前
    @waibunleung 好的谢谢,不懂再请教
        30
    waibunleung   35 天前
    居然碰到一个跟我差不多但是自己写脚本刷 star 的上来了...真是醉了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2287 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 15:03 · PVG 23:03 · LAX 08:03 · JFK 11:03
    ♥ Do have faith in what you're doing.