第一次写爬虫,爬了课程格子的校花榜 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mianju
V2EX    程序员

第一次写爬虫,爬了课程格子的校花榜

  •  1
     
  •   mianju
    xinqiu 2016-02-12 18:50:45 +08:00 8020 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。

    果然是大过年了闲了蛋疼, 给自己找乐子。写了个很简陋的爬虫,爬校花。请原谅我,性能是硬伤> <
    kechenggezi-Spider
    有大牛愿意帮忙改进么。。。

    29 条回复    2016-02-14 11:23:40 +08:00
    Kirscheis
        1
    Kirscheis  
       2016-02-12 19:02:56 +08:00
    设备 token 是什么。。没用过课程格子,这个东西是需要用类似 mitm 抓包的方法拿到的吗?还是算法生成的?
    另外看到代码 cookie 里写死的_kecheng_session ,确定这个值不会改变吗。。?
    mianju
        2
    mianju  
    OP
       2016-02-12 19:13:05 +08:00
    @Kirscheis token 是抓包得到的,_kecheng_session 这个会不会变我也没试过,因为手上只是用了一个账号来做的实验。另外,感觉 token 是假的,我就随便输了个 token ,也是能抓取数据的。
    wenyu1001
        3
    wenyu1001  
       2016-02-12 19:25:03 +08:00   1
    上 gevent or scrapy, 另外需要 code review 。
    mianju
        4
    mianju  
    OP
       2016-02-12 19:26:16 +08:00
    @wenyu1001 多谢指点> <
    shyling
        5
    shyling  
       2016-02-12 19:27:29 +08:00
    为什么我看到性能想入非非= =
    mianju
        6
    mianju  
    OP
       2016-02-12 19:29:51 +08:00
    @shyling 这。。。。
    itfanr
        7
    itfanr  
       2016-02-12 20:38:42 +08:00
    @shyling 好没出息
    Kirscheis
        8
    Kirscheis  
       2016-02-12 22:00:32 +08:00
    @mianju 原来是这样。测试了一下你的爬虫,图片只下载了前二十张就卡住了 (bug?) 。。。单线程下载爬速确实感人。另外返回的图片 url 可以直接去掉后面的 !300x300 ,这样就可以下载到原图了。
    Kirscheis
        9
    Kirscheis  
       2016-02-12 22:04:41 +08:00
    @mianju 我试试加个多线程功能。另外对方返回的本来就是 serialize 了的 json 格式,感觉可以多保存点信息,比如说直接保存 pretty-print 的 jsonline 文件之类的。。
    Kirscheis
        10
    Kirscheis  
       2016-02-12 23:02:01 +08:00 via Android
    发现自己并不会用 python2 。。直接用 scrapy 重构了
    icedx
        11
    icedx  
       2016-02-12 23:04:22 +08:00
    为啥不换个头像呢?
    mianju
        12
    mianju  
    OP
       2016-02-13 00:01:07 +08:00
    @Kirscheis 没有吧,我这边是慢慢悠悠的跑完了 9 千多个照片,就是速度慢,括弧哭,非常感谢你的帮助,第一次写爬虫,所以写的很烂,见谅> <
    gateswong
        13
    gateswong  
       2016-02-13 02:09:29 +08:00 via Android
    性能还好 其实你爬太快的话反而对网站不友好还可能被封
    shyling
        14
    shyling  
       2016-02-13 02:32:14 +08:00 via iPad
    @itfanr 妈蛋,我怎么没出息了
    lijsh
        15
    lijsh  
       2016-02-13 10:46:50 +08:00
    看了下楼主代码,好像 request 用了两次?一次用来求 page 总数,一次用来迭代结果页;感觉可以再打磨一下,结果可不可以一页一页出,像 Generator 那样?
    hqs123
        16
    hqs123  
       2016-02-13 12:54:27 +08:00
    楼主很厉害啊
    xuxiangyang
        17
    xuxiangyang  
       2016-02-13 14:01:20 +08:00
    楼主你好,从我们群里看到了你的帖子,也看了你的 github 。感觉你是个很不错的同学,有没有兴趣来课程格子玩玩爬虫,做做开发呀?有兴趣的话请给我发邮件: [email protected] 课程格子工程师 徐向阳
    N4HS3zwwKs7wira0
        18
    N4HS3zwwKs7wira0  
       2016-02-13 14:06:18 +08:00
    @xuxiangyang 给多少工资啊 2333
    aksoft
        19
    aksoft  
       2016-02-13 15:46:29 +08:00
    亮点是校花
    ahxxm
        20
    ahxxm  
       2016-02-13 17:19:14 +08:00
    cookies 丢.gitignore 里吧.... 你这么 commit 上去不太安全
    penjianfeng
        21
    penjianfeng  
       2016-02-13 19:17:47 +08:00
    校花榜...要不我也去爬一下...
    jackyuJ
        22
    jackyuJ  
       2016-02-13 19:20:37 +08:00
    = = 你可以再尝试弄个聚类。
    xuxiangyang
        23
    xuxiangyang  
       2016-02-13 20:18:54 +08:00
    @lianxiangru 可以发简历,然后私聊~
    mianju
        24
    mianju  
    OP
       2016-02-14 10:24:30 +08:00
    @xuxiangyang 当然有兴趣> <,没想到第一次做爬虫就能引起课程格子的注意,还担心写爬虫会违法括弧哭。
    mianju
        25
    mianju  
    OP
       2016-02-14 10:27:25 +08:00
    @ahxxm 非常感谢你的提醒,在后面我会改进的
    mianju
        26
    mianju  
    OP
       2016-02-14 10:35:56 +08:00
    @lijsh 做这个是心血来潮,当时也没考虑太多,就随便先写出一个,来测试一下是否真的能跑完全部的头像
    luw2007
        27
    luw2007  
       2016-02-14 10:51:19 +08:00
    爬取图片没有什么好的办法。 如果过频繁抓取。 会被禁用掉得。

    +++ b/xhspider.py
    @@ -42,12 +42,12 @@ def main():
    #以下代码为保存图片
    count += 1
    cOnn= requests.get(p[i]['avatar_url'], cookies=cookies,headers=headers)
    - name = str(i) +'.jpg'
    + name = str(count) +'.jpg'
    f = open(r'/path/to/save/'+ name,'wb') #填写保存位置
    f.write(conn.content)
    f.close()
    @Kirscheis 保存的逻辑有问题。
    mianju
        28
    mianju  
    OP
       2016-02-14 10:54:38 +08:00
    @luw2007
    我写的处理方式是修改请求中的 cur_time ,见 xhspider.py 文件,虽然效率低,但是确实能跑完。
    luw2007
        29
    luw2007  
       2016-02-14 11:23:40 +08:00
    @mianju 服务端封禁请求方法很多。 目测目前这个接口没有做访问限制。
    最严厉的限制是封 ip ,一般的做法是利用大量第三方代理去下载图片。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3566 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 05:03 PVG 13:03 LAX 22:03 JFK 01:03
    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