1
shiny 2016-03-02 16:09:51 +08:00
爬虫爬太快不是作死么
|
2
AlexaZhou 2016-03-02 16:12:39 +08:00
半小时大概 1800 秒
7W 条记录的话,如果每条记录查询一次,那么就是每秒 70000/1800 = 38 次查询,并不算快 |
3
Strikeactor 2016-03-02 16:13:22 +08:00
比如复用长连接?
|
4
AlexaZhou 2016-03-02 16:14:44 +08:00
如果想更快可以多进程,异步
PHP 并不能异步,那么多开几个进程同时爬取可能会更快一些 ps :爬虫太快了容易被封 |
6
szopen OP @AlexaZhou 你这个是查询数据库的计算, 7W 字词是入库后的数据。
每一条数据是从别人网站上爬下来的,因为要考虑网络请求失败问题(主要有网络超时,网站 403 ,获取到的数据不全等重复请求),所有并不是 38 次查询请求 |
7
est 2016-03-02 16:28:58 +08:00
好像有个说法是不用 sleep(3) 的爬虫都是爬虫届的耻辱么?
|
9
szopen OP @est 嘿嘿,我多线程, 50 个索引线程,每个索引线程再开 20 个内容线程,爬取时失败等待 500 微秒,然后每失败一次递增,看来是我运气比较好
|
10
crabRunning 2016-03-02 19:38:26 +08:00 1
|
11
lincanbin 2016-03-02 20:06:41 +08:00 1
PHP 里 curl_multi 实现并发确实很快,以前用来爬豆瓣可以跑到 30M+。
毕竟爬虫瓶颈不在入库,而在网络。 只要网络可以实现并发,用什么语言写都一样。 |
12
towser 2016-03-02 20:32:14 +08:00
爬出来能否分亨一份
|
14
cxbig 2016-03-02 21:51:29 +08:00
爬虫的效率似乎取决于对方网站有没有加限制吧。。。
|
15
chineselittleboy 2016-03-02 23:02:02 +08:00 via Android
有代码开源研究研究么
|
16
binux 2016-03-02 23:08:02 +08:00
@crabRunning 为什么我用 Hornet 搜到的是 Gay Social Network !你让我搜了什么!
|
17
yangqi 2016-03-02 23:10:21 +08:00
php 本来就是最好的语言,没什么意外啊
|
18
crabRunning 2016-03-03 00:11:28 +08:00
@binux 用 tor 吧, tor 还带了个 tor-browser , terminal 下还针对小白用户有个 tor-arm 。用 curl 试一下会看到类似下边的效果,做爬虫你值得拥有!
ProxyChains-3.1 ( http://proxychains.sf.net) |DNS-request| ip.cn |S-chain|-<>-127.0.0.1:9050-<><>-4.2.2.2:53-<><>-OK |DNS-response| ip.cn is 40.78.110.144 |S-chain|-<>-127.0.0.1:9050-<><>-40.78.110.144:80-<><>-OK 当前 IP : 77.247.181.163 来自:荷兰 crab@sb:~$ proxychains curl ip.cn ProxyChains-3.1 ( http://proxychains.sf.net) |DNS-request| ip.cn |S-chain|-<>-127.0.0.1:9050-<><>-4.2.2.2:53-<><>-OK |DNS-response| ip.cn is 40.78.110.144 |S-chain|-<>-127.0.0.1:9050-<><>-40.78.110.144:80-<><>-OK 当前 IP : 94.242.228.108 来自:卢森堡 crab@sb:~$ proxychains curl ip.cn ProxyChains-3.1 ( http://proxychains.sf.net) |DNS-request| ip.cn |S-chain|-<>-127.0.0.1:9050-<><>-4.2.2.2:53-<><>-OK |DNS-response| ip.cn is 40.78.110.144 |S-chain|-<>-127.0.0.1:9050-<><>-40.78.110.144:80-<><>-OK 当前 IP : 149.202.98.161 来自:法国 OVH |
19
shiji 2016-03-03 00:16:50 +08:00
我曾经用 PHP 扫过疼群的音乐库,挂在服务器慢慢扫的,后来本来想逐一下载。。。结果发现疼讯把洞补上了,,,(是年尾那次针对版权音乐的升级)
|
20
eoo 2016-03-03 00:19:41 +08:00 via Android
都是大神
|
21
fuxkcsdn 2016-03-03 00:44:08 +08:00 via Android
@lincanbin 话说 curl_multi,如何做到开 8 个并发数,然后处理完 1 个马上再添加一个任务进去?就是保持有 8 个并发数
之前自己封装的 curl_multi 以为能达到这种效果,但后来自己开了台 http 服务器进行测试,发现是 8 个处理完了再添加 8 个,如果 8 个中 7 个完成, 1 个卡住了,也要等到这 1 个超时才会再添加新的 8 个任务 |
22
lincanbin 2016-03-03 00:49:17 +08:00
@fuxkcsdn 如果你想实现这个,你应该把爬虫程序封装成一个通过传入参数发起一次抓取的 PHP ,然后用另一个 PHP 程序通过 call 之前写的 PHP 子程序,再自己通过 memcached 之类的实现一个锁。
|
23
fuxkcsdn 2016-03-03 00:56:29 +08:00 via Android
@lincanbin 现在是用 redis 和 curl 实现类似效果,你说的封装是封装 curl_multi 还是 curl ?
|
24
sb 2016-03-03 01:15:01 +08:00 via iPhone 2
@crabRunning 我表示很无辜 收到了提醒被 at 了……
|
25
wd0g 2016-03-03 08:28:17 +08:00
全部排名已经查询完毕,总用时: 7306 秒,总添加: 2096164
单线程跑 JD 商品的数据 速度还可以,50 个 get 最慢 15 秒 |
26
wd0g 2016-03-03 08:31:18 +08:00
@crabRunning 用代理速度很慢吧,在终端不能看见唰唰唰的显示不舒服的说
|
27
WildCat 2016-03-03 09:20:48 +08:00
@crabRunning
您好,请教个问题, tor 如何切换 IP ?我在 linux 用 torsocks 貌似都是同一个 IP 。 |
28
crabRunning 2016-03-03 09:32:42 +08:00 via Android
@sb 兄弟,你这 ID 颇有我年轻时候的风范
|
29
crabRunning 2016-03-03 09:36:28 +08:00 via Android
@WildCat tor 出口在国外,用 ss
|
30
crabRunning 2016-03-03 09:41:26 +08:00 via Android
@wd0g tor-arm 可以显示你的上下行速度,以前用的时候上下 1m 多
|
31
sdrzlyz 2016-03-03 09:44:09 +08:00
爬虫瓶颈不在并发速度啊。。。。骚年
|
32
realpg 2016-03-03 09:50:51 +08:00
对方网络如果说没有限制并发,你这弱爆了
曾经确认发现某站没有爬虫限制,抓了整站百万的内容,也不过俩小时 curl_multi 大法好 |
33
miao 2016-03-03 10:40:37 +08:00
全世界最大的爬虫 google 蜘蛛 他们用的什么技术
|
35
lygmqkl 2016-03-23 15:32:24 +08:00 via iPhone
php curl+cli mode = 效率还可以的爬虫
毕竟爬虫的关键不在于多快,而在于对方的限制和本地网络状况 现在写爬虫我都习惯了 sleep 间隔了。 一来没必要太快 二来稳定更重要,多出两个小时就多两小时 |