如何使用Anemone来爬视频地址
刚刚翻回之前写的一些爬虫脚本,想分享一下其中一个比较有意思的爬虫。 这个爬虫脚本使用的是Chris Kite写的Anemone(一个Ruby的爬虫库)。它提供了非常简单的DSL用来爬取每一个页面以及其URLs,官方说会自动计算出其需要的最短路径。而且,这个爬虫库是多线程。由于Ruby正则表达式的写法简洁,因此,看上去非常简短。
主要用到的gem有anemone,digest,还有用来保存链接的mongo
1 2 |
|
首先,会定义一些全局变量,其中ENTRY_PATTERN是入口,PAGE_PATTERN是要爬的页面,ANY_PATTERN还会包含另外一些需要爬的链接:
1 2 3 |
|
接着新建一个MONGODB以及表,因为是要爬http://www.oabt.org,所以就直接命名了:
1 2 |
|
接着,是定义Anemone的一些options:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
好了,接着就是开始爬了,#focus_crawl中会定义需要爬的URL,只会保留ANY_PATTERN的URL,接着,如果符合PAGE_PATTERN的,会在其页面中找他的title,id,reference url,还有就是他的下载链接:magnet/thunder/ed2k(这里会使用到NOKIGIRI,因为我熟悉css selector,所以代码中直接使用css selecor来抓),接着就会检查他的引用页的hash值是否已经存在,如果不存在就直接插入mongo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
全部的代码如下,总共不到60行的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|