之前的深入爬取都是手工找链接的

很不符合框架的定义:准备怎么做,而不是怎么去做

我们想要什么样的东西?

说了摘菜(sspider)和炒菜(pipeline)其他的我们都不想参和的


所以是我们忽略了一个东西crawl

这东西就是自动跟进链接的

创建方法

scrapy-crawl

之前说过有这几种类型的

现在来指定模板创建一个

scrapy-crawl

内容

创建完成是这个样的

scrapy-crawl

上面多了个rules,下面方法名称变了

但是,我保证,下面方法不会再涉及链接的提取

因为这个爬虫会自动捕捉全部的链接,然后通过rules筛选需要跟进的链接


比如 豆瓣电影250

scrapy-crawl

链接正则

scrapy-crawl

感觉链接不全是吧,http呢?

不用怕,页面能点的它就能访问

运行看一看

scrapy-crawl

绝对可以啊,至少比原来更加方便快捷了啊

分析一下rules的结构

rules = (
    Rule(LinkExtractor(allow=r'\?start=*.?'), callback='parse_item', follow=True),
)

1. rules是元组,内部是Rule对象

2. Rule制定规则,制定解析方法,链接跟进,链接样式

3. LinkExtractor链接过滤,通过正则进行链接的筛选

其实都不难,至少rules和Rule都不会变化了

关键是LinkExtractor

1. allow:保留链接,正则

2. deny:丢弃链接,正则

3. restrict_xpath:保留链接,xpath

4. allow_domains:允许域名

5. deny_domains:禁止域名

其实划分起来,就是正选反选,加双重过滤。

要的多,就反选,要的少,就正选,不过关键看啥方法适合提取我们刚好需要的链接

域名也是 一样,只是严格一点的话,双重过滤更保险


这样省去解析链接的功夫,怕的更快了。

当然了,偷懒是一方面,我的确抛弃了勤劳这个美德

但是,它底层 筛选肯定比我快啊,而且都加载了,我何必多次一举呢,所以我获得了聪明

所以说,我懒了,也变聪明了


聪明人都是懒人

想懒,证明你有变聪明人的潜质

能懒,那就是聪明人

想懒不能懒,那才叫不勤劳

相关文章: