在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。

一、数据提取:Selectors和Item

在Scrapy中,提取数据主要通过Selectors来完成。Selectors基于XPath或CSS表达式的查询语言来选取HTML文档中的元素。你可以在你的爬虫中使用response对象的xpath或css方法来创建一个Selector对象。

例如,我们可以修改我们的QuotesSpider爬虫,使用Selectors来提取每个引用的文本和作者:

import scrapy

class QuotesSpider(scrapy.Spider):

name = "quotes"

start_urls = [

'http://quotes.toscrape.com/page/1/',

]

def parse(self, response):

for quote in response.css('div.quote'):

text = quote.css('span.text::text').get()

author = quote.css('span small::text').get()

print(f'Text: {text}, Author: {author}')

此外,Scrapy还提供了Item类,可以定义你想要收集的数据结构。Item类非常适合收集结构化数据,如我们从quotes.toscrape.com中获取的引用:

import scrapy

class QuoteItem(scrapy.Item):

text = scrapy.Field()

author = scrapy.Field()

然后我们可以修改QuotesSpider爬虫,使其生成和收集QuoteItem对象:

class QuotesSpider(scrapy.Spider):

name = "quotes"

start_urls = [

'http://quotes.toscrape.com/page/1/',

]

def parse(self, response):

for quote in response.css('div.quote'):

item = QuoteItem()

item['text'] = quote.css('span.text::text').get()

item['author'] = quote.css('span small::text').get()

yield item

二、数据处理:Pipelines

Scrapy使用数据管道(pipelines)来处理爬虫从网页中抓取的Item。当爬虫生成一个Item,它将被发送到Item Pipeline进行处理。

Item Pipeline是一些按照执行顺序排列的类,每个类都是一个数据处理单元。每个Item Pipeline组件都是一个Python类,必须实现一个process_item方法。这个方法必须返回一个Item对象,或者抛出DropItem异常,被丢弃的item将不会被之后的pipeline组件所处理。

例如,我们可以添加一个Pipeline,将收集的引用保存到JSON文件中:

import json

class JsonWriterPipeline(object):

def open_spider(self, spider):

self.file = open('quotes.jl', 'w')

def close_spider(self, spider):

self.file.close()

def process_item(self, item, spider):

line = json.dumps(dict(item)) + "\n"

self.file.write(line)

return item

然后你需要在项目的设置文件(settings.py)中启用你的Pipeline:

ITEM_PIPELINES = {

'tutorial.pipelines.JsonWriterPipeline': 1,

}

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

有需要的小伙伴,可以V扫描下方二维码免费领取

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!

2️⃣国内外Python书籍、文档

① 文档和书籍资料

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: