V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raawaa
V2EX  ›  Node.js

初学 Node.js,写了一个 18 禁小爬虫

  raawaa · 2015-10-31 14:19:31 +08:00 · 25856 次点击
这是一个创建于 3093 天前的主题,其中的信息可能已经有所发展或是发生改变。

项目地址: https://coding.net/u/raawaa/p/jav-scrapy/git

jav-scrapy

jav-scrapy ,一个爬取 AV 磁力链接的小爬虫。

anim.gif

Prequisites

  • Node.js 4.2.1+

Installation

$ git clone https://git.coding.net/raawaa/jav-scrapy.git
$ cd jav-scrapy
$ npm install # 安装 npm 包依赖
$ npm link # 使 jav-scrapy 全局可执行

Usage

Usage: jav [options]

  Options:

    -h, --help            output usage information
    -V, --version         output the version number
    -p, --parallel <num>  设置抓取并发连接数,默认值: 2
    -t, --timeout <num>   自定义连接超时时间(毫秒)。默认值: 10000
    -l,  --limit <num>    设置抓取影片的数量上限, 0 为抓取全部影片。默认值: 0
    -o, --output <path>   设置磁链抓取结果的保存位置,默认为当前用户的主目录下的 magnets.txt 文件

Todo

  • 让 jav-scrapy 的操作方式更像原生命令行程序
  • 只抓取某一类型的影片磁链
  • 加影片磁链保存至本地数据库
  • 增量抓取
第 1 条附言  ·  2015-11-01 15:30:37 +08:00

更新了一下,增加了搜索功能,比如:

$ jav -s ipz # 只抓取以 ipz 开头的番号
$ jav -s ipz-634 # 只抓取番号 ipz-634
第 2 条附言  ·  2015-11-01 15:32:31 +08:00
在 github 上也推了一份:
https://github.com/raawaa/jav-scrapy
第 3 条附言  ·  2015-11-01 21:16:04 +08:00

又增加了「下载影片封面」的功能,到此为止觉得已经够自己用的了,短期不会再更新了,放几个用例吧:

# 下载影片封面到~/porn_covers/目录下,图片文件名为番号,并行下载数为 10
$ jav -c ~/porn_covers/ -p 10         

# 抓取 ipz 开头的所有番号的磁链,并保存在~/magnets.txt 中,并行抓取数 20
$ jav -s ipz -p 20 -o ~/magnets.txt 

# 抓取番号 ipz-634 这部影片的磁链
$ jav -s ipz-634 -o ~/magnet.txt   

# 抓取「连裤袜」主题的所有影片磁链...并行数 10
$ jav -b http://www.javbus.in/genre/28 -p 10 -o ~/magnets.txt
101 条回复    2015-12-27 18:37:37 +08:00
1  2  
iShao
    1
iShao  
   2015-10-31 14:21:49 +08:00 via Android
从来只看自己喜欢的演员的作品…已经收藏全了
raawaa
    2
raawaa  
OP
   2015-10-31 14:25:04 +08:00   ❤️ 1
@iShao 最近孩子刚出身,没时间逛黄网,无奈只能自己写了个这个。
cxbig
    3
cxbig  
   2015-10-31 14:26:02 +08:00
恭喜 LZ 找到学习的原动力
raawaa
    4
raawaa  
OP
   2015-10-31 14:26:49 +08:00
@cxbig 我这样不会被抓起来吧
cxbig
    5
cxbig  
   2015-10-31 14:29:03 +08:00
@raawaa 1024 到处都是,不差你一个。
leavic
    6
leavic  
   2015-10-31 14:30:52 +08:00
其实我前两天写了个 scrapy 爬虫,把 javbus 上的所有 AV 信息都抓完了,一共 8 万多部。
scream7
    7
scream7  
   2015-10-31 14:31:35 +08:00
看不懂的样子
raawaa
    8
raawaa  
OP
   2015-10-31 14:32:24 +08:00
@leavic 昨天 javbus 网站好像改版了,影片少了很多,我昨天晚上抓了一下全站,只有 3000 多部了……
Chappako
    9
Chappako  
   2015-10-31 14:39:25 +08:00
不知道这样或者分享番号,算不算违法
Andy1999
    10
Andy1999  
   2015-10-31 14:43:54 +08:00 via iPhone
高端技术传播淫秽资料罪加一等
leavic
    11
leavic  
   2015-10-31 14:48:04 +08:00
@raawaa 你从 page/1 这样开始抓的话,最终只能抓到不到 50 页,这是 wordpress 分页插件造成的,我是从演员表那里开始抓的,女优数都有 3 万多。
exoticknight
    12
exoticknight  
   2015-10-31 14:48:47 +08:00
代码写的不错……下载来
学代码
学代码
学代码
Hipponensis
    13
Hipponensis  
   2015-10-31 14:51:24 +08:00
参考一下,我去写个 Scrapy 抓。
DennyDai
    14
DennyDai  
   2015-10-31 14:52:46 +08:00   ❤️ 1
嗯我只看第十九行代码就够了
raawaa
    15
raawaa  
OP
   2015-10-31 14:55:42 +08:00
@leavic 我昨晚抓到第 103 页的时候出现了 404 错误。用浏览器浏览,末页也是到 102 页。在昨天以前我浏览这个站可不是这样的。
leavic
    16
leavic  
   2015-10-31 15:07:07 +08:00   ❤️ 1
@raawaa 那他现在还放大了页面数了,我最开始抓的时候只有 48 页,抓完后我就觉得数据不对,调到 48 也一看是两个月前的数据,这网站都这么久了。
其实我觉得 javbus 也是抓的 dmm ,然后让网友自己提交磁链形成的,否则我抓取来的 8 万多条数据,这要人工编辑得花多大功夫, 3 万多个女优的名字能全知道的就不可能是人类。
agate
    17
agate  
   2015-10-31 15:09:59 +08:00
@leavic 要不要这么饥渴啊 lol 人家爬虫很累的好不好
raawaa
    18
raawaa  
OP
   2015-10-31 15:10:11 +08:00
@leavic 多谢,我又有继续改写到动力了……
xwartz
    19
xwartz  
   2015-10-31 15:12:17 +08:00   ❤️ 1
Kuro
    20
Kuro  
   2015-10-31 15:14:09 +08:00
能否抓取有 HD 种子的片子,前几天想实现发现因为 javmoo 反爬虫就搁置了。
raawaa
    21
raawaa  
OP
   2015-10-31 15:15:58 +08:00
@Kuro 目前不可以,不过应该可以实现的,就是有点工作量。
Kuro
    22
Kuro  
   2015-10-31 15:20:19 +08:00
发现 javbus 这个网站已经有高清分类了,不错~
ipconfiger
    23
ipconfiger  
   2015-10-31 15:22:10 +08:00
1024
qile1
    24
qile1  
   2015-10-31 15:22:53 +08:00 via Android
一直想弄一个可仪抓取电影网站图片及介绍的爬虫,把家里的电影介绍都更新,以后没网本地观看,可惜不会
raawaa
    25
raawaa  
OP
   2015-10-31 15:27:09 +08:00
@xwartz 用上了,太棒了
lk920724
    26
lk920724  
   2015-10-31 15:30:05 +08:00
electron-v0.33.9-darwin-x64.zip 这个貌似下载的很慢额
xwartz
    27
xwartz  
   2015-10-31 15:30:10 +08:00
@raawaa 其实我想说的是图片资源不错吧...
JiaFeiX
    28
JiaFeiX  
   2015-10-31 15:59:41 +08:00 via iPhone
请问 gif 图用的什么软件生成的?
zzy8200
    29
zzy8200  
   2015-10-31 16:18:50 +08:00 via iPhone
然而服务器根本挂不了 BT ……
GPU
    30
GPU  
   2015-10-31 16:46:14 +08:00
楼主想撸出血啊?
ChiangDi
    31
ChiangDi  
   2015-10-31 16:47:57 +08:00
楼主都是有孩子的人了啊... 直接找老婆不就好了......
kn007
    32
kn007  
   2015-10-31 17:03:44 +08:00
高调收藏。。。
kn007
    33
kn007  
   2015-10-31 17:05:52 +08:00
话说源码放 github 估计会有很多星星。。。
fyyz
    34
fyyz  
   2015-10-31 17:13:28 +08:00
屌丝进入高科技领域依然是屌丝(逃
raawaa
    35
raawaa  
OP
   2015-10-31 17:13:32 +08:00   ❤️ 1
@JiaFeiX 用的 silentcast

$ sudo add-apt-repository ppa:sethj/silentcast
$ sudo apt-get update
$ sudo apt-get install silentcast
raawaa
    36
raawaa  
OP
   2015-10-31 17:14:46 +08:00
bingu
    37
bingu  
   2015-10-31 17:21:02 +08:00 via iPad
这贴干货真多。
raawaa
    38
raawaa  
OP
   2015-10-31 17:23:21 +08:00
@lk920724 试试淘宝的镜像吧
npm.taobao.org
ready2race
    39
ready2race  
   2015-10-31 17:26:23 +08:00
1943 年,美国心理学家亚伯拉罕·马斯洛在《人类激励理论》论文中提出---生理需要是推动人们行动最首要的动力
kn007
    40
kn007  
   2015-10-31 17:29:39 +08:00
@raawaa ~已星
hantsy
    41
hantsy  
   2015-10-31 18:08:57 +08:00
好几年没看 AV 了,,,这么多怎么看得完。也不推荐一下哪个好一点。
iloveayu
    42
iloveayu  
   2015-10-31 18:09:36 +08:00 via iPad
丧心病狂。。。
LWXYFER
    43
LWXYFER  
   2015-10-31 19:17:32 +08:00
学习学习,我要自己抓。
sxd
    44
sxd  
   2015-10-31 19:28:09 +08:00
我只能说 域名太屌
VmuTargh
    45
VmuTargh  
   2015-10-31 19:48:12 +08:00 via Android
噫,好污
kn007
    46
kn007  
   2015-10-31 19:56:32 +08:00
@sxd 抓到 ACN 一只
pierrec
    47
pierrec  
   2015-10-31 20:01:10 +08:00
moe3000
    48
moe3000  
   2015-10-31 20:25:51 +08:00
污得不行啊
yuzhouwww
    49
yuzhouwww  
   2015-10-31 20:46:47 +08:00
get
LancerComet
    50
LancerComet  
   2015-10-31 20:51:50 +08:00
这么污的东西必须兹词
raawaa
    51
raawaa  
OP
   2015-10-31 21:00:22 +08:00 via iPad
@xwartz 艺术性太高撸点不高
jerryhethatday
    52
jerryhethatday  
   2015-10-31 21:04:37 +08:00
楼主制作这个 gif 的工具叫啥?看起来挺高端的
coldfog
    53
coldfog  
   2015-10-31 21:08:10 +08:00
为什么我点进来整个页面都黑了?你做了什么?
raawaa
    54
raawaa  
OP
   2015-10-31 21:16:39 +08:00
@jerryhethatday 叫 silentcast
raawaa
    55
raawaa  
OP
   2015-10-31 21:18:35 +08:00
@coldfog 好像 Node.js 板块下的帖子都这样
linux40
    56
linux40  
   2015-10-31 22:00:26 +08:00
我又多了一个网站。。。
aszxqw
    57
aszxqw  
   2015-10-31 22:05:56 +08:00
npm install 好慢好慢。
raawaa
    58
raawaa  
OP
   2015-10-31 22:12:47 +08:00
@aszxqw 可以用淘宝的镜像: npm.taobao.org
49
    59
49  
   2015-10-31 22:17:56 +08:00 via Android
收藏比回复还多…
你们啊!绅士
sxd
    60
sxd  
   2015-10-31 23:23:56 +08:00
@kn007 还记得我啊 呵呵
aszxqw
    61
aszxqw  
   2015-10-31 23:30:37 +08:00
@raawaa 感觉用了淘宝的景象也没加快。。。。
cszchen
    62
cszchen  
   2015-10-31 23:32:30 +08:00
我正在想干这个事呢,然后做一个客户端
kn007
    63
kn007  
   2015-10-31 23:33:04 +08:00
@sxd 能不记得么,老伙计。
sxd
    64
sxd  
   2015-10-31 23:40:22 +08:00
@raawaa during 和 whilst 有什么区别呢 我是说实际应用上
acrisliu
    65
acrisliu  
   2015-10-31 23:44:05 +08:00 via Android
楼主有没有 nodejs 入门教程推荐?
pabno
    66
pabno  
   2015-10-31 23:44:05 +08:00
baseUrl 这个变量定义的很有深度,值得好好研究
raawaa
    67
raawaa  
OP
   2015-11-01 00:41:45 +08:00
@aszxqw 不会吧,我用丈母娘家的破长城宽带都感觉速度不错
raawaa
    68
raawaa  
OP
   2015-11-01 00:44:25 +08:00
@sxd whilst 的测试函数必须是同步函数啊,向我这个需要用到异步 http 请求来判断页面是否存在的情况,的就没法用 whilst 了。
raawaa
    69
raawaa  
OP
   2015-11-01 00:56:01 +08:00   ❤️ 1
@acrisliu 其实我 node.js 没怎么深入学,什么流啊子进程啊之类的都不会。我现在还处在 javascript 打基础的阶段。

javascript 的话我强烈推荐 Kyle Simpson 写的《 You Don't Know JS 》系列丛书,或者看此人在 pluralsight 上开的「 Advanced Javascript 」视频课程。这些在网上都有资源下载。
acrisliu
    70
acrisliu  
   2015-11-01 09:52:24 +08:00 via Android
@raawaa 嗯嗯 好的 谢谢推荐☺
crayygy
    71
crayygy  
   2015-11-01 11:17:38 +08:00
@raawaa 孩子都出世了还......
wbsdty331
    72
wbsdty331  
   2015-11-01 12:42:29 +08:00
污,不过我喜欢 23333
coldfog
    73
coldfog  
   2015-11-01 12:57:35 +08:00
@raawaa 刚确认了一下,还真是……
XianZaiZhuCe
    74
XianZaiZhuCe  
   2015-11-01 14:07:13 +08:00
认真的,小心被查,不开玩笑
sxd
    75
sxd  
   2015-11-01 19:53:48 +08:00
@raawaa 对哦 我一开始误以为 whilst 可以延迟 return 呢....
coolicer
    76
coolicer  
   2015-11-02 09:55:11 +08:00
哈哈,不错。
godjarl
    77
godjarl  
   2015-11-02 10:25:06 +08:00
这是我学习 node 的理由嘛
4912941
    78
4912941  
   2015-11-02 11:19:31 +08:00
<img src=" "/>

为什么会报错呢
raawaa
    79
raawaa  
OP
   2015-11-02 11:37:43 +08:00
@4912941 window 下好像是会有点问题。要注意 2 点:
- 请跳出 jav-scrapy 这个目录再运行 jav 命令,不要在 jav-scrapy 目录里直接运行 jav 命令,如果实在要在 jav-scrapy 目录里运行的话,运行 node jav.js ,后跟选项;
- windows 里不要用'~'之类的 Linux 下特有的路径符号。
4912941
    80
4912941  
   2015-11-02 11:54:06 +08:00
@raawaa 可以用了
0xfan
    81
0xfan  
   2015-11-02 12:18:57 +08:00
80 回复, 178 人收藏,你们啊
hi54yt
    82
hi54yt  
   2015-11-02 13:27:31 +08:00
fengdra
    83
fengdra  
   2015-11-02 22:01:12 +08:00
@leavic 求打包发送
kaiwei
    84
kaiwei  
   2015-11-05 11:39:19 +08:00
弱问磁力链接是种子吗 还是直接就能下载电影了?
raawaa
    85
raawaa  
OP
   2015-11-05 14:42:09 +08:00
@kaiwei ,我希望你这样一直纯洁下去,所以不打算告诉你……:)
sinux
    86
sinux  
   2015-11-06 16:51:21 +08:00
想问一下,那个总进度的不断前进的命令条是怎么做的?
raawaa
    87
raawaa  
OP
   2015-11-07 12:19:57 +08:00
@sinux 有现成的包可以用的。
http://npm.taobao.org/package/progress
sinux
    88
sinux  
   2015-11-07 13:29:00 +08:00
@raawaa 非常感谢
flw01
    89
flw01  
   2015-11-25 17:24:51 +08:00
我们现在在招聘 node.js,坐标广州,感兴趣的私聊我哈, http://www.lagou.com/jobs/1284459.html
greatghoul
    90
greatghoul  
   2015-12-01 20:02:36 +08:00
好样的。
qingwalashi
    91
qingwalashi  
   2015-12-04 23:13:42 +08:00
我用 python 尝试写了爬虫,有两个链接,没有任何返回值。问题,一个是网站的图片貌似写了判断,代码下载图片会显示一个拒绝的网站。还有一个是,你如何获得磁力链接的地址的?我直接打开 XHR 的链接,没有任何返回值。
raawaa
    92
raawaa  
OP
   2015-12-05 13:00:12 +08:00
@qingwalashi 图片就是直接获取图片资源的 url 然后下载呗;磁链就是直接从 html 文本里提取呗。
qingwalashi
    93
qingwalashi  
   2015-12-05 21:14:40 +08:00
@raawaa 磁力链接获 html 解析不到撒
raawaa
    94
raawaa  
OP
   2015-12-06 20:21:09 +08:00
@qingwalashi 你说的是「 javbus 」这个站么?
pangtianyu
    95
pangtianyu  
   2015-12-13 02:42:23 +08:00
其实这个好像算是传播盗版……
0rangeT1ger
    96
0rangeT1ger  
   2015-12-15 19:03:09 +08:00
对于我等来说, 第 16 行代码最为重要.
halbert
    97
halbert  
   2015-12-18 15:04:32 +08:00 via Android
@ready2race 一百多年前 弗洛伊德就说过 “力比多”是人类一切活动的基础…
huage
    98
huage  
   2015-12-22 15:30:58 +08:00
学以致用啊,很好!
eraise
    99
eraise  
   2015-12-22 19:40:44 +08:00
一直不知道如果不工作,代码还能干吗,现在知道了。。
raawaa
    100
raawaa  
OP
   2015-12-25 11:20:14 +08:00
@eraise 因为我本职工作不是程序员,所以写的东西都是业余用来改善生活的。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2759 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 43ms · UTC 12:43 · PVG 20:43 · LAX 05:43 · JFK 08:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.