使用item封装数据

Scrapy提供了2个类用来自定义数据类,封装爬取到的数据

  • Item基类
  • Field类

    Item和Field

  • 首先我们需要设置items.py文件
1
2
3
4
5
6
7
8
9
import scrapy


class PachongItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
price = scrapy.Field()
pass
  • 修改book_spider.py
1
2
3
4
5
6
7
8
9
import scrapy
# 传入自身包用from ..包名 import 内容
from ..items import PachongItem

for book in response.css('article.product_pod'):
spider = PachongItem()
spider['name'] = book.xpath('./h3/a/@title').extract_first()
spider['price'] = book.css('p.price_color::text').extract_first()
yield spider

Field元数据

假设我们获取的信息是一个字符串列表,但是我们想得到的是一个字符串,这个时候在Field()需要设置serializer参数,例如name = scrapy.Field(serializer=lambda x:'|'.join(x))那最后就会以这个格式输出

赏个🍗吧
0%