最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

Scrapy框架的使用之Scrapy通用爬虫_为什么scrapy的parse_start_url和parse

业界 admin 15浏览 0评论

下面将介绍一些内置的的Processor。

1. Identity

Identity是最简单的Processor,不进行任何处理,直接返回原来的数据。

2. TakeFirst

TakeFirst返回列表的第一个非空值,类似extract_first()的功能,常用作Output Processor,如下所示:

from scrapy.loader.processors import TakeFirst
processor = TakeFirst()
print(processor([‘’, 1, 2, 3]))

输出结果如下所示:

1

经过此Processor处理后的结果返回了第一个不为空的值。

3. Join

Join方法相当于字符串的join()方法,可以把列表拼合成字符串,字符串默认使用空格分隔,如下所示:

from scrapy.loader.processors import Join
processor = Join()
print(processor([‘one’, ‘two’, ‘three’]))

输出结果如下所示:

one two three

它也可以通过参数更改默认的分隔符,例如改成逗号:

from scrapy.loader.processors import Join
processor = Join(‘,’)
print(processor([‘one’, ‘two’, ‘three’]))

运行结果如下所示:

one,two,three

4. Compose

Compose是用给定的多个函数的组合而构造的Processor,每个输入值被传递到第一个函数,其输出再传递到第二个函数,依次类推,直到最后一个函数返回整个处理器的输出,如下所示:

from scrapy.loader.processors import Compose
processor = Compose(str.upper, lambda s: s.strip())
print(processor(’ hello world’))

运行结果如下所示:

HELLO WORLD

在这里我们构造了一个Compose Processor,传入一个开头带有空格的字符串。Compose Processor的参数有两个:第一个是str.upper,它可以将字母全部转为大写;第二个是一个匿名函数,它调用strip()方法去除头尾空白字符。Compose会顺次调用两个参数,最后返回结果的字符串全部转化为大写并且去除了开头的空格。

5. MapCompose

Compose类似,MapCompose可以迭代处理一个列表输入值,如下所示:

from scrapy.loader.processors import MapCompose
processor = MapCompose(str.upper, lambda s: s.strip())
print(processor([‘Hello’, ‘World’, ‘Python’]))

运行结果如下所示:

[‘HELLO’, ‘WORLD’, ‘PYTHON’]

被处理的内容是一个可迭代对象,MapCompose会将该对象遍历然后依次处理。

6. SelectJmes

SelectJmes可以查询JSON,传入Key,返回查询所得的Value。不过需要先安装Jmespath库才可以使用它,命令如下所示:

pip3 install jmespath

安装好Jmespath之后,便可以使用这个Processor了,如下所示:

from scrapy.loader.processors import SelectJmes
proc = SelectJmes(‘foo’)
processor = SelectJmes(‘foo’)
print(processor({‘foo’: ‘bar’}))

运行结果如下所示:

bar

以上内容便是一些常用的Processor,在本节的实例中我们会使用Processor来进行数据的处理。

接下来,我们用一个实例来了解Item Loader的用法。

三、本节目标

我们以中华网科技类新闻为例,来了解CrawlSpider和Item Loader的用法,再提取其可配置信息实现可配置化。官网链接为:http://tech.china/。我们需要爬取它的科技类新闻内容,链接为:http://tech.china/articles/,页面如下图所示。

我们要抓取新闻列表中的所有分页的新闻详情,包括标题、正文、时间、来源等信息。

四、新建项目

首先新建一个Scrapy项目,名为scrapyuniversal,如下所示:

scrapy startproject scrapyuniversal

创建一个CrawlSpider,需要先制定一个模板。我们可

下面将介绍一些内置的的Processor。

1. Identity

Identity是最简单的Processor,不进行任何处理,直接返回原来的数据。

2. TakeFirst

TakeFirst返回列表的第一个非空值,类似extract_first()的功能,常用作Output Processor,如下所示:

from scrapy.loader.processors import TakeFirst
processor = TakeFirst()
print(processor([‘’, 1, 2, 3]))

输出结果如下所示:

1

经过此Processor处理后的结果返回了第一个不为空的值。

3. Join

Join方法相当于字符串的join()方法,可以把列表拼合成字符串,字符串默认使用空格分隔,如下所示:

from scrapy.loader.processors import Join
processor = Join()
print(processor([‘one’, ‘two’, ‘three’]))

输出结果如下所示:

one two three

它也可以通过参数更改默认的分隔符,例如改成逗号:

from scrapy.loader.processors import Join
processor = Join(‘,’)
print(processor([‘one’, ‘two’, ‘three’]))

运行结果如下所示:

one,two,three

4. Compose

Compose是用给定的多个函数的组合而构造的Processor,每个输入值被传递到第一个函数,其输出再传递到第二个函数,依次类推,直到最后一个函数返回整个处理器的输出,如下所示:

from scrapy.loader.processors import Compose
processor = Compose(str.upper, lambda s: s.strip())
print(processor(’ hello world’))

运行结果如下所示:

HELLO WORLD

在这里我们构造了一个Compose Processor,传入一个开头带有空格的字符串。Compose Processor的参数有两个:第一个是str.upper,它可以将字母全部转为大写;第二个是一个匿名函数,它调用strip()方法去除头尾空白字符。Compose会顺次调用两个参数,最后返回结果的字符串全部转化为大写并且去除了开头的空格。

5. MapCompose

Compose类似,MapCompose可以迭代处理一个列表输入值,如下所示:

from scrapy.loader.processors import MapCompose
processor = MapCompose(str.upper, lambda s: s.strip())
print(processor([‘Hello’, ‘World’, ‘Python’]))

运行结果如下所示:

[‘HELLO’, ‘WORLD’, ‘PYTHON’]

被处理的内容是一个可迭代对象,MapCompose会将该对象遍历然后依次处理。

6. SelectJmes

SelectJmes可以查询JSON,传入Key,返回查询所得的Value。不过需要先安装Jmespath库才可以使用它,命令如下所示:

pip3 install jmespath

安装好Jmespath之后,便可以使用这个Processor了,如下所示:

from scrapy.loader.processors import SelectJmes
proc = SelectJmes(‘foo’)
processor = SelectJmes(‘foo’)
print(processor({‘foo’: ‘bar’}))

运行结果如下所示:

bar

以上内容便是一些常用的Processor,在本节的实例中我们会使用Processor来进行数据的处理。

接下来,我们用一个实例来了解Item Loader的用法。

三、本节目标

我们以中华网科技类新闻为例,来了解CrawlSpider和Item Loader的用法,再提取其可配置信息实现可配置化。官网链接为:http://tech.china/。我们需要爬取它的科技类新闻内容,链接为:http://tech.china/articles/,页面如下图所示。

我们要抓取新闻列表中的所有分页的新闻详情,包括标题、正文、时间、来源等信息。

四、新建项目

首先新建一个Scrapy项目,名为scrapyuniversal,如下所示:

scrapy startproject scrapyuniversal

创建一个CrawlSpider,需要先制定一个模板。我们可

发布评论

评论列表 (0)

  1. 暂无评论