学 python 不久,尝试参照别的库写了个 instagram 爬虫,想问问大家的建议?
link: https://github.com/luengwaiban/instagram-python-scraper
按照自己感觉写的,望各位 python 大虾能指点一下,教练,我想变强~
从v站过去了接近200人,大家都看了一下不说话,我很好奇为什么会这样...还是说我太唠叨了...(哭
1
waibunleung OP little cute one waiting for you masters~
|
2
dt2vba 2019-06-08 19:40:32 +08:00
厉害,感觉方法的命名很不错,简洁、规范
|
3
vkhsyj 2019-06-08 20:12:04 +08:00
写的不错,代码规范也挺好的,说实话不像新手写的
|
4
Northxw 2019-06-08 20:55:30 +08:00
老油条~
|
5
waibunleung OP @vkhsyj 之前有写过一下 php,不过也不是很厉害,算是有一点编程基础,谢谢您的肯定
|
6
waibunleung OP 还是恳请大家提出一些改进的建议,我现在心里没什么底的,因为我之前没接触过 python 开发,也不知道这样写是否是好的方式,请大家不要吝啬批评和建议呀~
|
7
waibunleung OP up 一下期待更多大佬进来指点~
|
8
claysec 2019-06-09 12:38:28 +08:00 via iPhone
都能直接写包了😂😂😂
|
9
claysec 2019-06-09 12:41:05 +08:00 via iPhone
能拜师吗(滑稽)
|
10
waibunleung OP @claysec 噗...别啊大哥,我认真的,我在各位大佬面前不敢抬头啊~
|
11
tikazyq 2019-06-09 15:11:39 +08:00 via iPhone
可以用爬虫平台 Crawlab 来管理你的爬虫,https://github.com/tikazyq/crawlab
|
12
waibunleung OP @tikazyq ok,谢谢你的推荐。另外关于我项目上的建议吗?
|
13
tikazyq 2019-06-09 16:53:25 +08:00
单个网站来说不错,可以考虑一下用同样的框架扩展到其他社交平台,这样就强大得多了
|
14
waibunleung OP @tikazyq 谢谢你的建议,我会认真考虑一下的,十分感谢~!
|
15
fenghuang 2019-06-09 19:11:28 +08:00
楼主您好,能介绍一下整个开发流程吗?我现在写爬虫只写了一个 py 文件,感觉不成体系
|
16
nondanee 2019-06-09 19:31:42 +08:00
看了下 usage 感觉不像爬虫像 SDK 啊,要不你改个名吧😂
|
17
waibunleung OP @nondanee 那我改成什么比较好?或者你印象中爬虫是怎么样的呢?
|
18
waibunleung OP |
19
BlackL 2019-06-09 21:51:04 +08:00
楼主你好,请问你的 InitializerModel 类中_is_auto_constructed 这个属性是起什么作用呢,因为整个类初始化的时候这个属性一直为 False,我也没在其他子类中见到过更改这个属性的,所以想问下这个属性的作用
|
20
Takamine 2019-06-09 21:58:35 +08:00 via Android
厉害,从分层到代码再到注释,都很漂亮阿。(。ò ∀ ó。)
个人感觉硬是要“鸡蛋里面挑骨头”的话(别打我 233333 ),那我感觉可能不够 pythonic。 可能我是想要看到 @property (干掉 Java 一般的 get,set ), 一些内容返回可以跟 scrapy 返回到 middleware 层一样试试 yield, 提到爬虫,那就什么 async/wait,线程池阿都换上去, 异常有了,日志也不能缺,用装饰器加上些功能。 各位别打我,我对楼主也是服气,楼主带我飞。_(:з」∠)_ |
21
waibunleung OP @Takamine 赞啊!
因为之前自己不是学 python 的,所以受别的语言的一些影响就把其他语言的一些东西带到过来了。所以写完之后自己也觉得不够 pythonic,才发了这个帖子希望有经验的大大来指点一下。 谢谢你的建议,线程其实之前有考虑,但是没想好线程对应怎样的使用场景,因为 instagram 的接口的分页数据获取是采用游标的形式的,没办法像常规爬虫那样有规律地分页去安排不同线程去获取不同分页段的数据。不过如果是按照用户列表去爬取用户的 post 的话,以及下载用户媒体的时候,线程就可能可以起到作用了。 另外我看了廖雪峰的博客,他建议是 进程 + async/await 的方式比使用线程高效。 至于 @property 之前我试着用了一下,因为我项目里面大部分是 get,极少 set,如果我使用了 @property,我需要写 getter 和 setter,心里想着 set 可以直接通过 obj.key=value 的方式设置,那就没有太大的必要再写多一次 setter,在我看来 @property 在对某些属性有限制时的场景下比较有实际意义,普通场景下感觉用不用都可以,也不知道这样的想法是不是我还不够深入的原因,所以最后没有采用 @property。 日志这一块我不知道作为一个库加上日志是否合适,但是我会认真考虑~ 说了很多,就当是相互交流一下想法,真心谢谢你的建议,这正是我想看到的,十分感谢~QwQ |
22
deleteDB 2019-06-10 10:01:31 +08:00
很用心 点个赞
|
23
fank99 2019-06-10 10:01:37 +08:00
写的很好 学习了
|
24
baojiweicn2 2019-06-10 10:02:17 +08:00
写的很不错。get_value / set_value 不够 pythonic,其他各个方面都蛮不错的。 楼上提到 async/await 确实是不错的。 @property 的表达方式。
|
25
waibunleung OP @baojiweicn2 关于 get_value / set_value 不够 pythonic 这点,我在楼上给出了我的想法,不知道这样的想法是否合理?还是说使用 @property 会更好一点?
我的想法: 至于 @property 之前我试着用了一下,因为我项目里面大部分是 get,极少 set,如果我使用了 @property,我需要写 getter 和 setter,心里想着 set 可以直接通过 obj.key=value 的方式设置,那就没有太大的必要再写多一次 setter,在我看来 @property 在对某些属性有限制时的场景下比较有实际意义,普通场景下感觉用不用都可以,也不知道这样的想法是不是我还不够深入的原因,所以最后没有采用 @property。 |
26
waibunleung OP @fank99 还是有很多可以改进的地方,谢谢你的赞同~
|
27
waibunleung OP @deleteDB 感谢鼓励!
|
28
waibunleung OP @BlackL 是 _is_auto_construct 才对,还我找了好久的说。如果这个属性为 True,则在初始化这个对象时,如果对象里面有属性方法,则会调用逐个调用对象的属性方法
|
29
fenghuang 2019-06-10 14:52:32 +08:00
@waibunleung 好的谢谢,不懂再请教
|
30
waibunleung OP 居然碰到一个跟我差不多但是自己写脚本刷 star 的上来了...真是醉了
|
31
1KN6sAqR0a57no6s 2019-08-30 14:45:39 +08:00
无法获取评论。media.get_comments()获取的一直是空数组,instagram.get_media_comments_by_code()报错 AttributeError: module 'instagram_scraper.model' has no attribute 'Comment',尝试登录会报错 "Select where to send security code......TypeError: can only concatenate str (not "int") to str"
|
32
susix 2019-09-20 22:42:43 +08:00
@waibunleung
刚刚好像看到了。。。是这个? github.com/realsirjoe/instagram-scraper, 楼主是 6.2 开的,这人是 6.10 开的,star 是楼主的十倍。。。 |
33
lpdy4 2019-10-28 15:59:13 +08:00
看了一下午这个库,回 V2 搜了下竟然找到原作者,很棒啊。
|
34
waibunleung OP @lpdy4 哇塞,请问你是怎么发现这个库的
|
35
lpdy4 2019-10-30 09:38:38 +08:00
@waibunleung #34 google Instagram 爬虫第三个就是你的库~~( ps.有一些特别初级的问题想请教下,不知道 tg or wechat 是否方便
|
36
smttop 2019-12-06 18:49:27 +08:00
@waibunleung 我也是新手,研究了很久不知道怎么运行下去,在本地运行一直有报错,请问能否加你 QQ 请教几个问题,谢谢!
|
37
waibunleung OP @lpdy4 你好,抱歉这么晚才看到,可以的,请联系我 wechat:shinelamla
|
38
waibunleung OP @smttop 加微信吧 wechat:shinelamla
|