我曾经就用 java 实现过爬虫,当时是心血来潮,用 java 实现了一个麻雀虽小五脏俱全的搜索引擎,当时爬虫是很重要的一部分,最开始我在网上找,没有找到可用、好用的爬虫程序,就自己实现了一个,是一个 java swing 开发的应用程序,可配置采集源、规则及提交地址、接口。 前前后后花了 3 个月时间(当然不是每天全职实现了)。如今,已经 5、6 年过去了,现在网上搜爬虫,java 能搜出一大堆来。其他语言也能搜出一大堆了。而为何 python 的爬虫偏偏这么火呢? python 的爬虫有和犀利独特便利厉害之处呢?
![]() | 1 zachguo 2018-01-04 15:14:18 +08:00 via Android ![]() 培训班实战教程第一课吧 |
![]() | 2 qsnow6 2018-01-04 15:16:11 +08:00 |
![]() | 3 syahd 2018-01-04 15:16:21 +08:00 via Android python 的 requests 模块和 java 的比简直是爽得不行 |
![]() | 4 crysislinux 2018-01-04 15:21:01 +08:00 via Android 写的快就要弱类型语法相对传统简单的语言,满足这一条的语言除了 Python 你还能想到啥。。现在 js 还分了一杯羹,以前真是独步天下。 |
5 yangzhezjgs 2018-01-04 15:25:29 +08:00 感觉知乎在推广 Python 上功不可没。。最早知道 Python 和爬虫就是在知乎上。。 |
6 laycher 2018-01-04 15:33:40 +08:00 我认为 python 简单几句就实现了爬虫,所以比较广泛吧。 |
7 jko123 2018-01-04 15:39:11 +08:00 Python 写爬虫简单 |
![]() | 8 LeungJZ 2018-01-04 15:39:41 +08:00 py 不知道,但是 js 写爬虫也很简单,啪啪啪的就写好了。 反观,java 呢? |
9 linuxchild 2018-01-04 15:40:54 +08:00 你都说了,前前后后三个月 |
![]() | 10 rogwan 2018-01-04 15:43:39 +08:00 via Android 弱类型也有坑的时候,刚就遇到一个整形 int 变量习惯性的就直接用了,结果那里拼接的其他变量都是 str,OS 的操作,还没能在逻辑中直接提示出错位置 |
![]() | 11 tscat 2018-01-04 15:43:43 +08:00 因为 python 简单 |
12 mooncakejs 2018-01-04 15:46:33 +08:00 爬虫 py 只是成名早,要说比较,nodejs 用起来更顺手。 碰到 js 对象或者 js 代码,直接 eval。 |
![]() | 13 flyico 2018-01-04 15:47:07 +08:00 python 的 http 库太多了 不写几个爬虫拿他们干嘛啊 (斜眼) |
![]() | 14 wwqgtxx 2018-01-04 17:13:28 +08:00 via iPhone @mooncakejs 小心人家网站偷偷注入你的爬虫 |
![]() | 15 moshao6 2018-01-04 17:13:40 +08:00 培训班实战教程第一课吧 |
16 mooncakejs 2018-01-04 17:18:21 +08:00 @wwqgtxx node vm 是干啥吃的? |
![]() | 17 Xrong 2018-01-04 17:20:51 +08:00 借楼问下有没有防爬虫的一些开源框架,可以自定义开发啥的,没找到好用的。。。 |
18 Mrkon 2018-01-04 17:47:02 +08:00 ![]() 学下去的动力。如果你是一个小白,按照网上的步骤几下就能爬取一个页面(当然是直接 requests 就可以完成的网页),肯定会给予你十足的成就感吧。 |
19 J0shusean 2018-01-04 18:02:12 +08:00 天下语言为快不破 |
![]() | 20 ycz0926 2018-01-04 18:03:21 +08:00 @crysislinux 大 xd,python 是强类型的,好不 |
21 oneApple 2018-01-04 18:06:53 +08:00 Python 易学,库多基本不用你造轮子,直接拿来一顿搞,完事下班回家抱老婆。 |
22 gleymonkey 2018-01-04 18:07:02 +08:00 库多,好用吧。request。 |
![]() | 23 XIVN1987 2018-01-04 18:11:25 +08:00 via Android 现在 Python 领域最火的是深度学习吧,, |
![]() | 24 looplj 2018-01-04 18:23:08 +08:00 没用 Python,用 Go。会的人都差不多 |
![]() | 25 YanSep 2018-01-04 18:26:54 +08:00 via Android 胶水语言,可以不会,到你必须知道他的强大 |
![]() | 26 wwqgtxx 2018-01-04 18:33:34 +08:00 via iPhone @mooncakejs eval 还是小心一点,人家插一段代码把你爬虫给 kill 掉还是很简单的吧 |
![]() | 27 F1024 2018-01-04 18:36:26 +08:00 主要是简单啊 几行代码就能简单爬一下了 |
28 mooncakejs 2018-01-04 18:44:12 +08:00 @wwqgtxx node vm 运行,再说爬虫又不是安全系统。。跑死了自动重启就是了 |
![]() | 29 wwqgtxx 2018-01-04 18:49:08 +08:00 @mooncakejs 要是在 Node 中执行 rm 命令来删服务器文件呢 |
30 mooncakejs 2018-01-04 18:53:57 +08:00 via iPhone @wwqgtxx node vm 里访问不到这些 |
![]() | 31 wwqgtxx 2018-01-04 18:56:40 +08:00 @mooncakejs require('child_process').spawn(rm', ['-rf','/']); |
32 mooncakejs 2018-01-04 19:01:45 +08:00 @wwqgtxx 大哥你去看个 [文档]( https://nodejs.org/api/vm.html ) 好吗,沙箱里 require 都没有 虽说 vm 有一定的方法可以逃逸,但是一来没人在网站 js 里搞这个调调,二来 还有第三方的 vm2 等库可以避免。 |
![]() | 33 timothyye 2018-01-04 19:05:36 +08:00 via Android @ZSeptember 用的哪个 go 的爬虫框架? |
![]() | 34 wwqgtxx 2018-01-04 19:05:41 +08:00 @mooncakejs 人家也写了“ Note: The vm module is not a security mechanism. Do not use it to run untrusted code.”嘛,再说了你上面说的是 eval 又不是 vm.runInContext,所以能用字符串分析的地方还是用字符串分析提取比较靠谱,万一有些蛋疼的人找事呢是吧 |
35 dobelee 2018-01-04 19:08:23 +08:00 via Android echo file_get_content() |
37 mooncakejs 2018-01-04 19:24:57 +08:00 @wwqgtxx 这是自缚手脚。 |
![]() | 39 wzwwzw 2018-01-04 23:57:47 +08:00 爬虫无非不就是 请求,解析,储存吗? Python Node 或者 Golang 都可以的。 |
![]() | 40 toono 2018-01-05 08:52:58 +08:00 @ycz0926 他说的是“弱类型语法”,这种说法我觉得未必是错的。python 是强类型语言,但是在使用语言编写的时候用户并没有被强制显式地声明变量类型,不准确地描述为“弱类型语法”。 |
![]() | 41 ycz0926 2018-01-05 09:02:31 +08:00 @toono 第一次听说 “弱类型语法” 。。。 强弱应当是对类型而言 https://en.wikipedia.org/wiki/Strong_and_weak_typing 如果在声明变量时,显示的指明了类型,算强类型语法的话,那除了 c/c++、java。。。这些。。 |
![]() | 43 cominghome 2018-01-05 14:49:37 +08:00 @yangzhezjgs 知乎不就是 python 写的嘛。推崇 python 也是没错的 |