最近用 PHP 写爬虫,自我感觉速度效率还不错

2016-03-02 16:08:05 +08:00
 szopen
自己做一个字典 /词典库,所以使用 PHP 从两个网站爬下来, 格式化后入 MySQL 库

总共 7W 个字 /词,全部完成大概是半小时(感谢这两个网站似乎没有做限制,网站性能也不错), CPU 利用率是在 150%( 4 核心平均 40%)左右。

这个效率我还是能接受的,不知道有没有更快的?更快主要需要有哪些方面优化?
7069 次点击
所在节点    PHP
36 条回复
fuxkcsdn
2016-03-03 00:44:08 +08:00
@lincanbin 话说 curl_multi,如何做到开 8 个并发数,然后处理完 1 个马上再添加一个任务进去?就是保持有 8 个并发数

之前自己封装的 curl_multi 以为能达到这种效果,但后来自己开了台 http 服务器进行测试,发现是 8 个处理完了再添加 8 个,如果 8 个中 7 个完成, 1 个卡住了,也要等到这 1 个超时才会再添加新的 8 个任务
lincanbin
2016-03-03 00:49:17 +08:00
@fuxkcsdn 如果你想实现这个,你应该把爬虫程序封装成一个通过传入参数发起一次抓取的 PHP ,然后用另一个 PHP 程序通过 call 之前写的 PHP 子程序,再自己通过 memcached 之类的实现一个锁。
fuxkcsdn
2016-03-03 00:56:29 +08:00
@lincanbin 现在是用 redis 和 curl 实现类似效果,你说的封装是封装 curl_multi 还是 curl ?
sb
2016-03-03 01:15:01 +08:00
@crabRunning 我表示很无辜 收到了提醒被 at 了……
wd0g
2016-03-03 08:28:17 +08:00
全部排名已经查询完毕,总用时: 7306 秒,总添加: 2096164
单线程跑 JD 商品的数据
速度还可以,50 个 get 最慢 15 秒
wd0g
2016-03-03 08:31:18 +08:00
@crabRunning 用代理速度很慢吧,在终端不能看见唰唰唰的显示不舒服的说
WildCat
2016-03-03 09:20:48 +08:00
@crabRunning
您好,请教个问题, tor 如何切换 IP ?我在 linux 用 torsocks 貌似都是同一个 IP 。
crabRunning
2016-03-03 09:32:42 +08:00
@sb 兄弟,你这 ID 颇有我年轻时候的风范
crabRunning
2016-03-03 09:36:28 +08:00
@WildCat tor 出口在国外,用 ss
crabRunning
2016-03-03 09:41:26 +08:00
@wd0g tor-arm 可以显示你的上下行速度,以前用的时候上下 1m 多
sdrzlyz
2016-03-03 09:44:09 +08:00
爬虫瓶颈不在并发速度啊。。。。骚年
realpg
2016-03-03 09:50:51 +08:00
对方网络如果说没有限制并发,你这弱爆了

曾经确认发现某站没有爬虫限制,抓了整站百万的内容,也不过俩小时

curl_multi 大法好
miao
2016-03-03 10:40:37 +08:00
全世界最大的爬虫 google 蜘蛛 他们用的什么技术
lincanbin
2016-03-03 11:54:35 +08:00
@fuxkcsdn curl 啊
lygmqkl
2016-03-23 15:32:24 +08:00
php curl+cli mode = 效率还可以的爬虫

毕竟爬虫的关键不在于多快,而在于对方的限制和本地网络状况

现在写爬虫我都习惯了 sleep 间隔了。 一来没必要太快 二来稳定更重要,多出两个小时就多两小时
allgy
2018-01-12 21:37:48 +08:00
@lincanbin curl_multi 不是真并发

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/260538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX