二(1.scrapy)Scrapy--item

scrapy 将item存到mysql中(pymysql) 本文将介绍如何将抓好的item数据存入到mysql中 声明:本文使用的python交互工具为pymysql并非mysqldb,因为网上使用pymysql存入数据的相关文章较少,所以写了这篇文章供大家参考 环境:ubantu 准备工作: items.py 将想要抓的数据累出来,下面是我要抓的数据:(我的项目名为wens) class WensItem(scrapy.Item): 阅读详情

Scrapy

文章仅供学习,如有错误,欢迎指出

1.创建项目 scrapy startproject tutorial

2.文件目录

tutorial/
    scrapy.cfg #项目的配置文件
    tutorial/
        __init__.py #声明包
        items.py    #项目中的item文件,提取字段内容
        pipelines.py #项目中的pipeline文件
        settings.py  #设置文件
        spiders/     #你的爬虫专用文件
            __init__.py  #声名包
            ...

使用Item整理

Item对象是自定义的python字典。 您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性):

for i in response('//ul/li'):
    item = DmozItem()#引用items.py下的类
    item['title'] = i.xpath().extract()
    ...
    yield item

存储爬取到的数据

scrapy crawl spidername -o items.json

Item Pipeline

process_item(self, item, spider)

http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/item-pipeline.html#process_item

3.定制自己的Items

Item是爬取到的数据的容器,在这里我们可以将自己爬取到的内容定义不同的字段名。再通过parse的方法解析并读取出来放到这里

import scrapy

class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

​ 如果你学过django 那么item字段一定难不倒你, 你可以创建属于自己的Item类,但是需要继承的时Item类,比如一个网站你想爬取的内容很多,那么你可以定义属于自己的item类,并且用Field去声明。但是他并没有对字段进行分类,当你在之后想要存到数据库时,就需要去修改他的形式。

Item在其他地方的引用


  from firstspider.items import DmozItem    #引用Item
    def parse_artical_text(self,response):
        pass

        item = bolezaixianSpiderItem()
        title = response.css('.grid-8 .entry-header h1::text')[0].extract()
        time =  response.css('.grid-8 .entry-meta p::text')[0].extract().strip().replace('·','').strip()
        theme = response.css('.grid-8 .entry-meta p a::text')[0].extract().strip()
        zan =   response.css('.grid-8 .post-adds span h10::text')[0].extract()
        fav = response.css('.grid-8 .post-adds span::text')[2].extract()
        fav_re = re.match('.*?(\d+).*',fav)
        if fav_re:
            fav = fav_re.group(1)
        else:
            fav=0

        item['title'] = title
        item['time'] = time
        item['theme'] = theme
        item['zan'] = zan
        item['fav'] = fav
        yield item

​ 这样的处理方式一旦当字段多的时候我们就会使得工作变得复杂,并且不好修改

#通过Item_load来简化我们提取字段的过程
from scrapy.loader import ItemLoader


item_loader = ItemLoader(item=bolezaixianSpiderItem,response=response)
item_loader.add_css('title','.grid-8 .entry-header h1::text')
item_loader.add_xpath('title','//id[@href ="sd"]')
item_loader.add_value('url',response.url)
item_loader.add_value('title',response.title)

​ 这样的操作会让我们容易后期的修改,add_css内只要输入字段名称以及css筛选的代码就可以过滤出来。

但是有时候我们只要取一个值,这时候我们需要在items.py下去筛选。

​ Field()包含了两种处理方法

from scrapy.loader.processors import MapCompose,TakeFirst

def cut_Item(value):   #这里处理我们的接受到的数据
    return value+"dsd"  #处理数据

class test(scrapy.Item):
    title = scrapy.Field(
        input_process = MapCompose(cut_Item),   #自定义对字段的处理方法
        output_process = TakeFirst() #取第一个,但是如果我们的字段过多。这个时候我们可以自定义一个load
    )

当然如果我们指向要取第一位数字,我们只要声名一个item类就可以了。

他有四个参数

class ItemLoader(object):

    default_item_class = Item
    default_input_processor = Identity()
    default_output_processor = Identity()
    default_selector_class = Selector

    def __init__(self, item=None, selector=None, response=None, parent=None, **context):
        if selector is None and response is not None:
            selector = self.default_selector_class(response)
        self.selector = selector
        context.update(selector=selector, response=response)
        if item is None:
            item = self.default_item_class()
        self.context = context
        self.parent = parent
        self._local_item = context['item'] = item
        self._local_values = defaultdict(list)
# from scrapy.loader import ItemLoader
#
# class  zidingyiItemload(ItemLoader):
#     default_output_processor = TakeFirst()
Scrapy 项目 Item 数据基础使用 Scrapy 项目 Item 数据基础使用1. 配置 item 管道2. 传值3. 保存数据 1. 配置 item 管道 后面的数字是执行的级别, 数字越小越先执行. 2. 传值 Spider must return request, item, or None 传入值只支持这三种类型. 3. 保存数据 scrapy crawl csdn -o ./data/csdn/csdn.csv ... 阅读详情

相关推荐

【Python爬虫(54)】深入Scrapy:Item与Item Pipeline的奥秘

聚焦于 Scrapy 框架中极为重要的两个部分:Item 与 Item Pipeline。在 Scrapy 爬虫开发过程中,Item 用于定义和存储爬取到的数据结构,就像是一个精心设计的容器,为数据提供了清晰的存储格式;而 Item Pipeline 则负责对这些数据进行后续处理,包括但不限于数据清洗、验证以及存储到数据库等操作,它如同一条高效的生产线,确保数据在爬取后的各个环节都能得到妥善处理 。它们的协同工作对于构建一个高效、稳定且可维护的爬虫系统至关重要。

邓邓子的博客 1196

Scrapy基本概念——Item Pipeline

蜘蛛抓取的每一个Item都会被发送到Item Pipeline。根据ITEM_PIPELINES的优先级设置,不同的Item Pipeline依次处理每一个Item,最后可删除该Item不做处理,也可将该Item发送到下一个Item Pipeline。Item Pipeline的主要用途有:1、清洗数据2、验证数据(检查Item某些字段是否为空)3、数据查重4、存储数据。

激情人生,美好生活 1942

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

【Python_Scrapy学习笔记(五)】Scrapy框架之管道文件pipelines.py详解

pipelines.py 文件是 Scrapy 框架下,用于接收网络爬虫传过来的数据,以便做进一步处理的文件。例如验证实体的有效性、清除不需要的信息、存入数据库(持久化实体)、存入文本文件等。本文中介绍 pipelines.py 文件的基本使用方法。

禾戊之昂的博客 1404

生产环境下oracle19c rac恢复节点2

现状:目前节点1数据库集群服务处于正常,节点2服务器由于系统故障无法恢复,确认系统重装。目标:不影响业务的情况下,重新把节点2添加回集群中。

sqlora的专栏 867

AI Agent技术架构与规模化应用:2025年技术深度解析

2025年,AI Agent(人工智能智能体)迎来了规模化应用的拐点时刻。根据Gartner等权威机构预测,企业软件中整合自主型AI的比例将从2024年的不足1%跃升至2028年的33%。本文深入剖析AI Agent的核心技术架构,从规划模块、记忆模块、工具调用模块到底层实现原理,结合Python和Go语言的实际代码示例,全面阐述AI Agent的技术实现路径。同时,本文探讨多智能体协作系统、企业级部署架构以及未来的技术演进方向,为开发者和技术决策者提供系统性的技术参考。关键词:AI Agent、大语言模型

shao.bing的专栏 1348

【Python3 爬虫学习笔记】Scrapy框架的使用 2

运行 进入Scrapy创建的目录,运行如下命令: scrapy crawl quotes 首先,Scrapy输出了当前的版本号以及正在启动的项目名称。接着输出了当前settings.py中一些重写后的配置。然后输出了当前所应用的Middlewares和Pipelines。Middlewares默认是启动的,可以在settings.py中修改。Pipelines默认是空,同样页可以在setting...

冰度猎魂的博客 379

Weblogic安装与部署

27.免密登录,在目录Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer和Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\Server-TA目录下,新建security\boot.properties文件,13.点击新建按钮,填写服务器名称,服务器监听地址,再点击下一步,最后点击完成。

m0_46259466的博客 6635

Python之Scrapy框架(笔记一)

什么是框架: 通用性性强的项目半成品 什么是scrapy? Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 通通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片 环境安装: -mac or linux :pip install scrapy -window系统: pip install wheel 下...

weixin_44597565的博客 642

LPDDR4协议规范之 (四)命令和时序

LPDDR4协议规范之 (四)命令和时序命令真值表激活操作读写访问操作读前沿和后沿突发读取操作流程读操作时序写前沿和后沿突发写操作写入均衡(待更新) 命令真值表 激活操作 ACTIVATE命令由两个连续命令组成,Activate-1命令和Activate-2。通过在(Activate-1)时钟的第一个上升沿保持CS HIGH,CA0 HIGH和CA1 LOW来发出Activate-1命令,通过...

YJFeiii的博客 2万+

ADRV902x射频评估实战:手把手教你用TES GUI生成ARM bin与JESD204C配置文件

在射频前端系统设计中,ADRV902x系列收发器凭借其宽带性能和灵活配置能力,已成为5G基站、微波回传等场景的核心器件。然而当工程师面对非官方硬件平台时,如何高效利用Transceiver Evaluation Software(TES)完成关键配置,成为项目推进的第一道门槛。本文将彻底解析脱离ADS9母板后的完整离线工作流,从参数预设到文件生成,手把手解决真实工程中的配置痛点。在Demo模式下,所有硬件状态检测都会被跳过,但配置文件生成功能完全可用。作为基础模板,因其配置最为简洁,便于后续自定义修改。

weixin_33704591的博客 429

学习2:scrapy保存数据、scrapy数据建模与请求

学习2:scrapy保存数据、scrapy数据建模与请求

weixin_41897680的博客 886

Halcon实战:5个工业质检案例教你玩转机器视觉(附完整代码)

本文通过5个工业质检实战案例,详细拆解了如何运用Halcon视觉软件库解决精密测量、包装检测、字符识别、透明物缺陷检测及深度学习质检等复杂问题。每个案例均提供完整代码与核心思路,旨在帮助工程师掌握从问题分析到方案落地的系统方法论,提升机器视觉项目的实战能力与鲁棒性。

nut55的博客 261

Scrapy框架(三)——Item

上一篇博客的例子中,提到了parse方法一般会返回一个request对象或item对象。那么这篇博客就记录下item,及处理item的管道pipelines。 引入 在抓取数据的过程中,主要要做的事就是从杂乱的数据中提取出结构化的数据。Scrapy的Spider可以把数据提取为一个Python中的字典,虽然字典使用起来非常方便,对我们来说也很熟悉,但是字典有一个缺点:缺少固定结构。在一个拥...

小白一直白 7870

[特殊字符] PetaLinux Qt 程序(WindRadar)无法自动启动问题解决文档

摘要:本文档解决了PetaLinux 2020.1系统中Qt程序(WindRadar)无法开机自动显示界面的问题。通过分析发现,自动启动时缺少DISPLAY=:0.0环境变量导致Qt找不到显示设备。最终在autostart.sh脚本中添加该变量,并完善了字体加载、驱动加载、显示设备检测等流程,确保程序正常自启显示界面。完整脚本包含路径检测、环境配置和错误处理,经验证各项功能均正常运行。

梁俊星的博客 327

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入了解 Scrapy 中的 Pipelines 和 Item

在Scrapy中定义Item类很简单,通常在项目中的items.py文件中创建。# 添加其他字段...

kilig_CSM的博客 1591

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

scrapy 两类item_Scrapy组件之item

Scrapy是一个流行的网络爬虫框架,从现在起将陆续记录Python3.6下Scrapy整个学习过程,方便后续补充和学习。Python网络爬虫之scrapy(一)已经介绍scrapy安装、项目创建和测试基本命令操作,本文将对item设置、提取和使用进行详细说明item设置item是保存爬取到的数据的容器,其使用方式和字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误,定义类型为sc...

weixin_36277197的博客 701

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python scrapy爬虫框架抓取多个item 返回多pipeline的处理

python scrapy爬虫框架抓取多个item 返回多pipeline的处理

爱你的大饼头呦 5594

Scrapy Item Loaders机制详解

1. Items爬虫的主要任务就是从非结构化的数据中获得结构化的数据。 Item 对象是种简单的容器,保存了爬取到得数据。 其提供了 类似于词典(dictionary-like) 的API以及用于声明可用字段的简单语法。声明Item Item使用简单的class定义语法以及 Field 对象来声明。例如:import scrapyclass Product(scrapy.Item): n

DawnRanger的专栏 1万+

Item Pipeline-Scrapy框架

Item Pipeline即项目管道、它的调用发生在Spider产生Item对象之后。当Spider处理完Response、Item就会被Engine传递给Item Pipeline。被定义的Item Pipeline就会被按顺序依次被调用,完成一连串的处理过程、比如数据清洗、数据存储。清洗HTML数据验证爬取的数据,检查爬取字段查重、去重将爬取到的结果存储起来。

weixin_61383086的博客 1150

Scrapy中的Item

爬虫的主要目标是从页面爬取非结构性的数据然后提取出结构性数据。Scrapy提供Item类可以实现这样的要求。Item对象是简单的容器,用于保存爬取到的数据。 1.Item类 class scrapy.item.Item([arg]):返回一个新条目对象,可以传入参数进行初始化。 唯一属性: fields:包含所有声明字段(declared field)和填充字段(populated f...

dengnaopingba11332的博客 465

探讨scrapy当中的pipeline何时获取item。

问题来自于在运行spider过程中,pipeline当中写入的数据库存储过程始终得不到item传递的数据,经调试,发现了pipeline被调用的机制。   写一段代码来测试:   spider.py: import scrapy from items import Work1Item #自定义的item,用于结构化数据 class Work1Spider(scrapy.Spider):

wu47165的博客 3402

scrapy 两类item_scrapy中item的处理技巧

scrapy中item的处理技巧Field 的类型Scrapy中只有一种类型,就是 scrapy.Field(),类似于字典。url 的拼接metameta 在 Request 中作为参数,是一个字典。放在yield Request()中。yield Request(url=parse.urljoin(response.url, post_url), meta={"front_image_url"...

weixin_39524834的博客 770

python scrapy爬取网站数据二(scrapy使用详细介绍)

上篇文章 python scrapy爬取网站数据一 从一个简单的例子中给大家呈现了scrapy的使用,本篇将对scrapy的常用写法 做一个简单的介绍。 1、scrapy工程创建 在命令行输入如下命令,创建一个使用scrapy框架的工程 scrapy startproject scrapyDemo 创建好后的工程结构如下图 输入如下命令,在工程目录中创建示例代码 PS C:\P...

风水月的专栏 1563

scrapy中的item_loader

Item Loaders 提供了一个便利的机制来帮助 populating(填充) scrapted Items;虽然,Items 可以通过它类似 dict API 来填充,Item Loaders 提供了更多便利的方法来进行 populates; 简而言之,Items 提供了被爬取数据的一个容器,而 Item Loaders 为该容器提供了 populating 的机制; Item Loade

oCaiSege的博客 1230
上一篇: Python~
下一篇: pycon新发现之pipenv-
Alpaca_h
博客等级 码龄9年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值