1
Livid MOD Celery or RQ is better for such scenario.
|
3
phuslu 2012-09-14 00:08:49 +08:00
gevent.pool.spawn + httplib2
|
4
Brutal 2012-09-14 00:25:11 +08:00
queue 然后 q.get()
|
5
reus 2012-09-14 00:33:21 +08:00
requests + multiprocessing.Pool
|
7
btwo 2012-09-14 10:38:07 +08:00
有测试结果了也请贴出来,一起学习下!
|
8
muxi 2012-09-14 10:50:49 +08:00
|
9
muxi 2012-09-14 10:51:50 +08:00
|
10
muxi 2012-09-14 10:54:45 +08:00
|
13
sinreal 2012-09-14 12:48:26 +08:00
额,豆瓣好像限制单个ip访问频率的。楼主可以考虑多个ip慢慢去抓。
|
15
14kscn 2012-09-14 13:25:06 +08:00
我比较好奇的是 v2ex 可以贴 code 了?
|
16
eric_q 2012-09-14 13:32:18 +08:00
如果爬得过快消耗太多资源,可能会被手动封禁
|
18
clowwindy 2012-09-14 20:41:09 +08:00
爬虫的瓶颈不在抓取,在被爬的网站上……一般要爬单个网站的大量数据,要么直接找对方要,要么动用大量 IP……
抓取的性能不是问题,如果爬完全不同的网站,之前用 tornado 那个 async_http_client 写了一个爬虫,开 5 个进程一边爬一边往 HBase 里插,可以达到 2000 QPS。 |
19
fanzeyi 2012-09-14 20:45:57 +08:00
如果楼主可以生成出爬的页面的链接到一个数组里,可以直接用 grequests<https://crate.io/packages/grequests/> 非常好用的异步 URL Fetching 库.
后端是 Gevent ..可以写上 callback 参数 =v= |
20
chendahui007 2012-11-18 15:12:46 +08:00
@cabinw 可以看看你写的爬豆瓣电影那个么?
|
21
eric_q 2012-11-18 15:38:51 +08:00
|
22
cabinw OP @chendahui007 我已经放弃爬了,会被封IP的
|
24
chendahui007 2012-11-18 16:32:44 +08:00
@cabinw 那可以观摩你之前写的代码么?俺是新手,很新的手,没啥思路 ...`从IMDB id tt0000000 到 tt9999999遍历访问一遍豆瓣的电影信息 ` 这 它们怎么关联的 ,求思路
|
25
cabinw OP @chendahui007 gtalk:cabinw#gmail.com
|
26
lj0014 2012-11-18 21:20:43 +08:00
楼主爬了多少豆瓣电影了,据说有40W,我现在就爬了7W~
|
29
xi4nyu 2012-11-19 11:25:34 +08:00
多核机子上面应该对应核数启,才能达到最大性能.
|
31
BigZ 2012-11-19 14:23:45 +08:00
异步?还快速?太黑了
丢我们采集界的脸 采集界有个原则,单线程同步采集,必要的时候还要sleep几秒 |