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