综述
本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4
本篇我们来讲述items模块的用。
items 介绍
items主要目标是从非结构化来源(通常是网页)提取结构化数据。Scrap爬虫可以将提取的数据作为Python语句返回。虽然方便和熟悉,Python dicts缺乏结构:很容易在字段名称中输入错误或返回不一致的数据,特别是在与许多爬虫的大项目。要定义公共输出数据格式,Scrapy提供Item类。 Item对象是用于收集所抓取的数据的简单容器。它们提供了一个类似字典的 API,具有用于声明其可用字段的方便的语法。
各种Scrapy组件使用项目提供的额外信息:导出器查看声明的字段以计算要导出的列,序列化可以使用项字段元数据trackref定制,跟踪项实例以帮助查找内存泄漏(请参阅使用trackref调试内存泄漏)等。
声明定义
使用简单的类定义语法和Field对象来声明项目。示例代码如下(items.py):
import scrapy
class QsbkItem(scrapy.Item):
# 定义item数据字段
author = scrapy.Field()
content = scrapy.Field()
使用items
实例代码如下:
import scrapy
# 引入items类
from qsbk.items import QsbkItem
class QsbkSpiderSpider(scrapy.Spider):
name = 'qsbk_spider'
allowed_domains = ['qiushibaike.com']
start_urls = ['https://www.qiushibaike.com/text/page/1/']
base_url = 'https://www.qiushibaike.com'
def parse(self, response):
# SelectorList
# 解析页面
content_left = response.xpath('//div[@id="content-left"]/div')
# 提取数据
for dz_div in content_left:
# Selector
author = dz_div.xpath(".//h2/text()").get().strip()
content_tmp = dz_div.xpath(".//div[@class='content']//text()").getall()
content = ''.join(content_tmp).strip()
# 使用items进行返回
item = QsbkItem(author=author, content=content)
# 使用yield返回给pipline
yield item
我们可以把定义的QsbkItem类理解成为是一个字典(当然它不是字典)。
使用items继续传递数据在获取到时候的时候,使用不同的items来存放不同的数据,然后把这个数据交给pipeline的时候,可以通过isinstance(item, MyspiderItem)
来进行判断数据属于那个item,进行不同的数据处理(此部分在《Python爬虫笔记5.2 — scrapy框架pipline模块的使用》中已经讲解)。
其他博文链接
- Python爬虫1.1 — urllib基础用法教程
- Python爬虫1.2 — urllib高级用法教程
- Python爬虫1.3 — requests基础用法教程
- Python爬虫1.4 — requests高级用法教程
- Python爬虫2.1 — BeautifulSoup用法教程
- Python爬虫2.2 — xpath用法教程
- Python爬虫3.1 — json用法教程
- Python爬虫3.2 — csv用法教程
- Python爬虫3.3 — txt用法教程
- Python爬虫4.1 — threading(多线程)用法教程
- Python爬虫4.2 — ajax(动态网页数据抓取)用法教程
- Python爬虫4.3 — selenium基础用法教程
- Python爬虫4.4 — selenium高级用法教程
- Python爬虫4.5 — tesseract(图片验证码识别)用法教程
- Python爬虫5.1 — scrapy框架简单入门
- Python爬虫5.2 — scrapy框架pipeline模块的使用
- Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用
转载:https://blog.csdn.net/Zhihua_W/article/details/103970628