Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

Python学习交流群:1039649593

ltem

Item是保存爬取数据的容器,它的使用方法和字典类似。不过,相比字典,Item提供了额外的保护机制,可以避免拼写错误或者定义字段错误。

创建Item需要继承scrapy.Item类,并且定义类型为scrapy.Field的字段。在创建项目开始的时候Item文件是这样的。

import scrapyclass Tutorial1tem(scrapy.Item):#define the fields for your item here 7ike:#参照下面这个参数定义你的字段#name = scrapy.Fie1d()pass

在保存数据的时候可以每次初始化一个字典等格式,但是最方便,最好的保存方式就是使用Scrapy自带的ltem数据结构了。

我们学习了从页面中提取数据的方法,接下来学习如何封装爬取到的数据。应该用怎样的数据结构来维护这些零散的信息字段呢?最容易想到是使用Python字典(dict)。

回顾之前的代码

class Quotesspider(scrapy.spider):name = 'quotes'a1lowed_domains = ['toscrape.com']start_ur1s = ['http: //quotes.toscrape.com/']def parse(self,response):quotes = response.css( '.quote ' )for quote in quotes :text = quote.css('.text: :text ').get()author = quote.css( '.author : :text ').get()tags = quote.css( '.tag : :text ' ).getall()yield {'text':text,'author':author,'tags ' : tags,}

在该案例中,我们便使用了Python字典存储一本书的信息,但字典可能有以下缺点:

(1)无法一目了然地了解数据中包含哪些字段,影响代码可读性。
(2缺乏对字段名字的检测,容易因程序员的笔误而出错。
(3)不便于携带元数据(传递给其他组件的信息)。

ltem和Field

Scrapy提供了以下两个类,用户可以使用它们自定义数据类(如书籍信息),封装爬取到的数据:

1. ltem基类

数据结构的基类,在items.py中定义数据结构时,需要继承自该基类。

2. Field类

用来描述自定义数据类包含哪些字段(如name、price等)。

自定义一个数据类,只需继承ltem,并创建一系列Field对象的类属性即可。

以定义书籍信息quote为例,它包含个字段,分别为书的名字text、author和tags,代码如下:

#特殊的字典结构可以在scrapy中传递数据
class TutorialItem(scrapy.Item):#Field字段#就是类似于产生一个类似字典格式的数据拥有字典的一些属性#字段默认为空#我们可以通过实例化像着键赋值但是如果没有写这个键就不能赋值但是字典可以text = scrapy. Field()author = scrapy.Fie1d()tags = scrapy . Fie1d()

ltem支持字典接口,因此Tutorialltem在使用上和Python字典类似。

对字段进行赋值时,Tutorialltem内部会对字段名进行检测,如果赋值一个没有定义的字段,就会抛出异常(防止因用户粗心而导致错误)

scrapy.Request

Request和Response 对象,用于爬网网站。
Request对象用来描述一个HTTP请求,下面是其构造器方法的参数列表:

Request(url,ca11back=None,method='GET', headers=None,body=None,cookies=None,meta=None,encoding='utf-8 ',priority=O,dont_filter=False,errback=None,flags=None,cb_kwargs=None)
  • url(字符串) -此请求的URL

  • callback (callable)-将以请求的响应(一旦下载)作为第一个参数调用的函数。有关更多信息,请参见下面的将其他数据传递给回调函数。如果"请求'未指定回调,parse()则将使用"Spider"方法。请注意,如果在处理过程中引发异常,则会调用errback.

  • method(字符串)-此请求的HTTP方法。默认为‘GET'。

  • meta (dict) - Request.meta属性的初始值。如果给出,则在此参数中传递的字典将被浅表复制。

  • headers (dict)-请求头。dict值可以是字符串(对于单值标头)或列表(对于多值标头)。如果None作为值传递,则将根本不发送HTTP标头。

c1ass Quotesspider(scrapy.spider):name = 'quotes_3'allowed_domains = ['toscrape.com']start__ur1s = ['http://quotes.toscrape.com/']def parse(self,response):quotes = response.css( '.quote ' )for quote in quotes:text = quote.css( '.text: :text ' ).get()author = quote.css( '.author : :text ' ).get()tags = quote.css( '.tag : :text ' ). geta11()yield Qd01QuotesItem(text=text,author=author,tags=tags)next_page = response.css( '.next a: :attr(href) ' ).get()if next_page:next__ur1 = 'http: //quotes.toscrape.com' + next_pageyield scrapy. Request(next_url, cal7back=self.parse)

Python爬虫基础讲解(二十七):scrapy 框架—ltem和scrapy.Request相关推荐

  1. python爬虫基础(二)

    文章目录 python爬虫 1.异步爬虫 异步爬虫之多进程and多线程(不建议使用) 异步爬虫之线程池and进程池(适当使用) 单线程+异步协程(推荐) 补充:回调函数 补充:yield 多任务异步协 ...

  2. Python爬虫基础讲解(二十三):scrapy框架简介

    Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space.bilibili.com/523606542 Python学习交流群:1039649593 scrapy是一 ...

  3. Python爬虫基础操作二

    目录 四.爬虫数据存储csv/excel 五.session与cookies 六.selenium库:控制浏览器操作 七.定时与邮件 上一篇爬虫操作基础,本篇讲解爬虫数据存储.cookies,sess ...

  4. python编程基础之二十七

    列表生成式:[exp for iter_var in iterable] 同样也会有字典生成式,集合生成式,没有元组生成式,元组生成式的语法被占用了 字典生成式,集合生成式,就是外面那个括号换成{}  ...

  5. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  6. python爬虫从入门到实战笔记——第四章Scrapy框架

    推荐阅读: python爬虫从入门到实战笔记--第一章爬虫原理和数据爬取 python爬虫从入门到实战笔记--第二章非结构化数据和结构化数据的提取 python爬虫从入门到实战笔记--第三章动态HTM ...

  7. python基础代码库-python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

  8. python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解

    #Python进阶(二十)-Python爬虫实例讲解 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器.HTML下载器和HTML解析器. ##爬虫简单架构 ...

  9. (二)python爬虫基础知识续

    爬虫基础知识二 爬虫应用 数据爬取(微指数) 搜索引擎 app或网页的资源来源 浏览器能做的事情,原则上爬虫都能完成 12306抢票(机器学习可以识别验证码,或者在不需要验证码的合作网站爬取)(微信和 ...

  10. Python 爬虫案例(二)--附件下载

    Python 爬虫案例(二) 此篇文章将爬取的网站是:http://www.warrensburg-mo.com/Bids.aspx (有时候打开不一定会有标书,因为标书实时更新) 类型跟上一篇相似, ...

最新文章

  1. CGI,BOA配置心得
  2. 获得WebBrowser中的图片数据
  3. SAP修改已经释放的请求
  4. android加载转圈动画,android 围绕中心旋转动画
  5. zabbix db partition
  6. maven 打包javadoc乱码解决方案
  7. Codeforces7C 扩展欧几里得
  8. 【ICLR2020】看未知观测:一种简单的蒙特卡洛并行化方法
  9. 6. memcache 机制的了解
  10. selenium调用浏览器进行抓取页面
  11. 微pe工具箱 系统安装教程_微pe工具箱怎么安装win10系统?微pe工具箱安装win10系统详细教程...
  12. 【Cocos Creator】 编辑器自定义 ——下拉列表属性、滑动条属性等
  13. springboot启动类
  14. vue侧边栏组件_画布侧边栏Vue组件
  15. 用手机计算机计算三次根号,手机自带计算器不行求推荐一个能开3次根号的 – 手机爱问...
  16. 电脑键盘的快捷功能,你学会了工作效率提高一半以上
  17. Linux(安装apache,设置端口,基于端口的配置方法)
  18. 紫外线探测器SG01D-C18应用于紫外光刻机
  19. JS元素的提取,删除 ,添加,修改
  20. 虚拟化及vmware产品介绍

热门文章

  1. LeetCode解题汇总目录
  2. 1.7亿条数据,比胡同和撸串更真实的北京
  3. 有这么一种东西,员工深恶痛绝,老板们却喜爱有加
  4. 计算机更换固态硬盘方法,换SSD不重装系统的方法
  5. web buuctf [0CTF 2016]piapiapia
  6. BUUCTF--[0CTF 2016]piapiapia
  7. 主图指标,原创极强黄点,将军柱和黄金柱都是3日的
  8. linux设置的依赖关系,linux:dpkg:依赖关系问题使得 skype 的配置工作不能继续:问题解决方法...
  9. 防火墙的访问控制策略
  10. 大学c语言基础知识必备大全,大学 C语言基础知识.ppt