Python快速开发分布式搜索引擎Scrapy精讲!

利用elasticsearch实现搜索引擎   ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 起步 1. 安装jdk   由于elasticsearc... 阅读详情

编写spiders爬虫文件循环抓取内容

Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数,

参数: Python学习交流群:1004391443

url='url'

callback=页面处理函数

使用时需要yield Request()

parse.urljoin()方法,是urllib库下的方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request                             #导入url返回给下载器的方法
from urllib import parse                                    #导入urllib库里的parse模块
class PachSpider(scrapy.Spider):
    name = 'pach'
    allowed_domains = ['blog.jobbole.com']                  #起始域名
    start_urls = ['http://blog.jobbole.com/all-posts/']     #起始url
    def parse(self, response):
        """
        获取列表页的文章url地址,交给下载器
        """
        #获取当前页文章url
        lb_url = response.xpath('//a[@class="archive-title"]/@href').extract()  #获取文章列表url
        for i in lb_url:
            # print(parse.urljoin(response.url,i))                                             #urllib库里的parse模块的urljoin()方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接
            yield Request(url=parse.urljoin(response.url, i), callback=self.parse_wzhang)      #将循环到的文章url添加给下载器,下载后交给parse_wzhang回调函数
        #获取下一页列表url,交给下载器,返回给parse函数循环
        x_lb_url = response.xpath('//a[@class="next page-numbers"]/@href').extract()         #获取下一页文章列表url
        if x_lb_url:
            yield Request(url=parse.urljoin(response.url, x_lb_url[0]), callback=self.parse)     #获取到下一页url返回给下载器,回调给parse函数循环进行
    def parse_wzhang(self,response):
        title = response.xpath('//div[@class="entry-header"]/h1/text()').extract()           #获取文章标题
        print(title)

 

 

 

 

 

Request()函数在返回url时,同时可以通过meta属性返回一个自定义字典给回调函数

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request                             #导入url返回给下载器的方法
from urllib import parse                                    #导入urllib库里的parse模块
from adc.items import AdcItem                               #导入items数据接收模块的接收类
class PachSpider(scrapy.Spider):
    name = 'pach'
    allowed_domains = ['blog.jobbole.com']                  #起始域名
    start_urls = ['http://blog.jobbole.com/all-posts/']     #起始url
    def parse(self, response):
        """
        获取列表页的文章url地址,交给下载器
        """
        #获取当前页文章url
        lb = response.css('div .post.floated-thumb')  #获取文章列表区块,css选择器
        # print(lb)
        for i in lb:
            lb_url = i.css('.archive-title ::attr(href)').extract_first('')     #获取区块里文章url
            # print(lb_url)
            lb_img = i.css('.post-thumb img ::attr(src)').extract_first('')     #获取区块里文章缩略图
            # print(lb_img)
            yield Request(url=parse.urljoin(response.url, lb_url), meta={'lb_img':parse.urljoin(response.url, lb_img)}, callback=self.parse_wzhang)      #将循环到的文章url添加给下载器,下载后交给parse_wzhang回调函数
        #获取下一页列表url,交给下载器,返回给parse函数循环
        x_lb_url = response.css('.next.page-numbers ::attr(href)').extract_first('')         #获取下一页文章列表url
        if x_lb_url:
            yield Request(url=parse.urljoin(response.url, x_lb_url), callback=self.parse)     #获取到下一页url返回给下载器,回调给parse函数循环进行
    def parse_wzhang(self,response):
        title = response.css('.entry-header h1 ::text').extract()           #获取文章标题
        # print(title)
        tp_img = response.meta.get('lb_img', '')                            #接收meta传过来的值,用get获取防止出错
        # print(tp_img)
        shjjsh = AdcItem()                                                                   #实例化数据接收类
        shjjsh['title'] = title                                                              #将数据传输给items接收模块的指定类
        shjjsh['img'] = tp_img
        yield shjjsh                                #将接收对象返回给pipelines.py处理模块

Scrapy内置图片下载器使用

Scrapy给我们内置了一个图片下载器在crapy.pipelines.images.ImagesPipeline,专门用于将爬虫抓取到图片url后将图片下载到本地

第一步、爬虫抓取图片URL地址后,填充到 items.py文件的容器函数

爬虫文件

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request                             #导入url返回给下载器的方法
from urllib import parse                                    #导入urllib库里的parse模块
from adc.items import AdcItem                               #导入items数据接收模块的接收类
class PachSpider(scrapy.Spider):
    name = 'pach'
    allowed_domains = ['blog.jobbole.com']                  #起始域名
    start_urls = ['http://blog.jobbole.com/all-posts/']     #起始url
    def parse(self, response):
        """
        获取列表页的文章url地址,交给下载器
        """
        #获取当前页文章url
        lb = response.css('div .post.floated-thumb')  #获取文章列表区块,css选择器
        # print(lb)
        for i in lb:
            lb_url = i.css('.archive-title ::attr(href)').extract_first('')     #获取区块里文章url
            # print(lb_url)
            lb_img = i.css('.post-thumb img ::attr(src)').extract_first('')     #获取区块里文章缩略图
            # print(lb_img)
            yield Request(url=parse.urljoin(response.url, lb_url), meta={'lb_img':parse.urljoin(response.url, lb_img)}, callback=self.parse_wzhang)      #将循环到的文章url添加给下载器,下载后交给parse_wzhang回调函数
        #获取下一页列表url,交给下载器,返回给parse函数循环
        x_lb_url = response.css('.next.page-numbers ::attr(href)').extract_first('')         #获取下一页文章列表url
        if x_lb_url:
            yield Request(url=parse.urljoin(response.url, x_lb_url), callback=self.parse)     #获取到下一页url返回给下载器,回调给parse函数循环进行
    def parse_wzhang(self,response):
        title = response.css('.entry-header h1 ::text').extract()           #获取文章标题
        # print(title)
        tp_img = response.meta.get('lb_img', '')                            #接收meta传过来的值,用get获取防止出错
        # print(tp_img)
        shjjsh = AdcItem()                                                                   #实例化数据接收类
        shjjsh['title'] = title                                                              #将数据传输给items接收模块的指定类
        shjjsh['img'] = [tp_img]
        yield shjjsh                                #将接收对象返回给pipelines.py处理模块

第二步、设置 items.py 文件的容器函数,接收爬虫获取到的数据填充

# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
#items.py,文件是专门用于,接收爬虫获取到的数据信息的,就相当于是容器文件
class AdcItem(scrapy.Item):    #设置爬虫获取到的信息容器类
    title = scrapy.Field()     #接收爬虫获取到的title信息
    img = scrapy.Field()       #接收缩略图
    img_tplj = scrapy.Field()  #图片保存路径

第三步、在pipelines.py使用crapy内置的图片下载器

1、首先引入内置图片下载器

2、自定义一个图片下载内,继承crapy内置的ImagesPipeline图片下载器类

3、使用ImagesPipeline类里的item_completed()方法获取到图片下载后的保存路径

4、在settings.py设置文件里,注册自定义图片下载器类,和设置图片保存路径

# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
from scrapy.pipelines.images import ImagesPipeline  #导入图片下载器模块
class AdcPipeline(object):                      #定义数据处理类,必须继承object
    def process_item(self, item, spider):       #process_item(item)为数据处理函数,接收一个item,item里就是爬虫最后yield item 来的数据对象
        print('文章标题是:' + item['title'][0])
        print('文章缩略图url是:' + item['img'][0])
        print('文章缩略图保存路径是:' + item['img_tplj'])  #接收图片下载器填充的,图片下载后的路径
        return item
class imgPipeline(ImagesPipeline):                      #自定义一个图片下载内,继承crapy内置的ImagesPipeline图片下载器类
    def item_completed(self, results, item, info):      #使用ImagesPipeline类里的item_completed()方法获取到图片下载后的保存路径
        for ok, value in results:
            img_lj = value['path']     #接收图片保存路径
            # print(ok)
            item['img_tplj'] = img_lj  #将图片保存路径填充到items.py里的字段里
        return item                    #将item给items.py 文件的容器函数
    #注意:自定义图片下载器设置好后,需要在

在settings.py设置文件里,注册自定义图片下载器类,和设置图片保存路径

IMAGES_URLS_FIELD 设置要下载图片的url地址,一般设置的items.py里接收的字段

IMAGES_STORE 设置图片保存路径

# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   'adc.pipelines.AdcPipeline': 300,  #注册adc.pipelines.AdcPipeline类,后面一个数字参数表示执行等级,
   'adc.pipelines.imgPipeline': 1,    #注册自定义图片下载器,数值越小,越优先执行
}
IMAGES_URLS_FIELD = 'img'                             #设置要下载图片的url字段,就是图片在items.py里的字段里
lujin = os.path.abspath(os.path.dirname(__file__))
IMAGES_STORE = os.path.join(lujin, 'img')             #设置图片保存路径

 

 

 

 

Python分布式爬虫与搜索引擎构建实战 面向对象编程(OOP)是Python强大功能的一个重要方面。在OOP中,我们通过类(class)和对象(object)来组织代码。类是对一组具有相同特征(属性)和行为(方法)的对象的抽象。例如,我们可以定义一个简单的类来表示人:创建一个Person类的实例(对象)并调用方法:掌握Python的基本语法和面向对象编程的基础知识是进行后续开发工作的关键。随着学习的深入,我们将探索如何使用Python进行更复杂的任务,例如网络爬虫的编写和搜索引擎的开发。 阅读详情

相关推荐

Python-分布式爬虫打造搜索引擎代码教程

分布式爬虫打造搜索引擎代码 教程

Python爬虫学习 | Scrapy框架详解

何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞(又名异步)的代码实现并发的,Scrapy之所以能实现异步,得益于twisted框架。

m0_65482549的博客 7964

python分布式爬虫打造搜索引擎

python分布式爬虫打造搜索引擎源码

python分布式爬虫打造搜索引擎 百度云_Python分布式爬虫必学框架Scrapy打造搜索引擎 完整版 附编码...

课程简介未来是什么时期?是数据时代!数据统计分析服务项目、网络金融,数据建模、自然语言理解解决、诊疗病例分析……愈来愈多的总结会根据数据信息来做,而爬虫更是迅速读取数据最重要的方法,对比其他語言,Python爬虫更简易、高效率单机版爬虫(Scrapy)到分布式爬虫(Scrapy-Redis)的极致实战演练不害怕你与其他爬虫课程内容较为,随意去看看,你能搞清楚,慕课网的情结从不是靠嘴说的,是靠高品质...

weixin_36348080的博客 830

Ansys Icepak:通过 ECAD 导入和非共形网格划分掌握电子冷却

通过将 Icepak 与 HFSS(用于高频电磁学)、Ansys Mechanical(用于结构分析)和 Ansys Fluent(用于流体动力学)等 Ansys 产品相结合,工程师可以在单个工作流程中仿真电子系统的完整行为,从热和电气动力学到机械和流体动力学。精细网格可以应用于关键区域,而在不太重要的区域使用较粗的网格,从而在不牺牲精度的情况下加快仿真速度。这些功能使 Ansys Icepak 成为从事复杂电子设计的工程师不可或缺的工具,可实现更精确的热分析并缩短开发时间。用于高效仿真的非共形网格划分。

jkh920184196的博客 1395

一起学习Avalonia(十三)

Avalonia 前面已经简单介绍了一下相关开发,有一个系统的了解。 到今天Avalonia已经基本成熟,但是扩展支持的还是不可能达到大企业的,我估计这也不可能。考虑了下,微软的MAUI框架可能会普及性更高,Avalonia也是我无意间知道的。 微软毕竟是会宣讲的全球。并且微软全球研发投入很大,全部专职开发,这种速度当然大。但是MAUI根据计划,可能还要很长时间,而且是社区支持Linux,估计时间更久。这不能适应现在的国产化开发。 预计一段时间还是需要Avalonia作为优先。当前Avalonia使

jinyuttt的专栏 4089

二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器...

编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数,  参数:  url='url'  callback=页面处理函数  使用时需要yield Request() parse.urljoin()方法,是urllib库下的方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接 # -*-...

weixin_30586085的博客 188

RK3588 EVB开发板原理图讲解【六】

该原理图展示了eMMC Flash与主控芯片之间的连接关系,以及相关的电源、信号线路和去耦电容等。

weixin_48721556的博客 1183

Python:Scrapy分布式爬虫打造搜索引擎集合篇 -(一)到(八)完整版

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站 本教程一共八章:从零开始,直到搭建一个搜索引擎。 推荐前往我的个人博客进行阅读:http://blog.mtianyan.cn/ 目录分章效果更佳哦 分章查看目录: Scra...

weixin_34144848的博客 4960

Cadence17.2 > Allegro > 检查PCB Layout信号线组等长

Cadence17.2 > Allegro > 检查PCB Layout等长和配线

DL_62532的专栏 1万+

YOLOv7独家原创改进:多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1668

Python快速开发分布式搜索引擎Scrapy精讲!

用命令创建自动爬虫文件 创建爬虫文件是根据scrapy的母版来创建爬虫文件的 scrapy genspider -l查看scrapy创建爬虫文件可用的母版 Available templates:母版说明 Python资源共享群:484031800 basic创建基础爬虫文件 crawl创建自动爬虫文件 csvfeed创建爬取csv数据爬虫文件 xmlfeed创...

Pythoncxy的博客 246

Microsemi Libero系列教程(全网首发)

关于Libero IDE和Libero SoC Libero分为Libero IDE和Libero SoC,Libero IDE最新版本是v9.2 SP3(2016年4月4日)已经不再更新维护了,而Libero SoC是Libero IDE的升级版,官方推荐的开发工具,文中的Libero指的是Libero SoC。 Libero SoC Libero® SoC是Microsemi(美高森美)官方...

whik1194的博客 2万+

python分布式编程_Python快速开发分布式搜索引擎Scrapy精讲!

用命令创建自动爬虫文件创建爬虫文件是根据scrapy的母版来创建爬虫文件的scrapy genspider -l 查看scrapy创建爬虫文件可用的母版Available templates:母版说明Python资源共享群:484031800basic 创建基础爬虫文件crawl 创建自动爬虫文件csvfeed 创建爬取csv数据爬虫文件xmlfeed 创建爬取xml数据爬虫文件创建一个...

weixin_39864489的博客 143

【软件系统架构】系列六:MBSE(基于模型的系统工程)

基于模型的系统工程(MBSE)是一种以模型为核心的系统工程方法论,通过结构化、可视化的模型取代传统文档,实现从需求到验证的全生命周期管理。MBSE采用SysML建模语言,包含需求、功能、架构和验证四大要素,支持自动追踪、仿真分析和代码生成。相比文档式工程,MBSE具有变更影响自动分析、跨团队协作和高可视化等优势,广泛应用于航空航天、汽车电子等领域。典型开发流程包括需求建模、行为建模、架构建模等阶段,配合MagicDraw、Cameo等工具链实现。MBSE正与数字孪生、AI技术融合,推动自动化建模和智能验证的

moton2017的博客 2786

Android插件化和组件化面试题及参考答案

如何使用 Gradle 来管理 Android 项目中的模块依赖? Gradle 是一个强大的构建工具,在 Android 项目中管理模块依赖主要通过以下方式。 首先,在项目的根目录下的 build.gradle 文件中,需要配置仓库。一般会添加如 Google 的 Maven 仓库和 JCenter 等,例如在 repositories 部分添加: repositories { google() jcenter() } 对于模块依赖,在每个模块(例如 app

大模型大数据攻城狮的专栏 1185

Python必学框架Scrapy,Python分布式爬虫打造搜索引擎

Python必学框架Scrapy,Python分布式爬虫打造搜索引擎

软希网分享源码的博客 968

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

新版Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

本章会从爬虫和反爬虫的斗争过程开始讲解,然后讲解scrapy的原理,然后通过随机切换user-agent和设置scrapy的ip代理的方式完成突破反爬虫的各种限制。增量抓取和数据更新是爬虫运行中经常遇到的问题,比如当前爬虫正在运行,但是新增的数据如何及时发现,如何将后来的url先进行抓取,如何发现新数据都是实际开发中经常原道的问题,本章节通过修改scrapy-redis的源码以最小的代价来解决上诉问题,通过本章节的学习我们将会更加懂得如何去控制爬虫的运行环节。描述:未来是什么时代?

niwoxiangyu的博客 402

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

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站https://github.com/mtianyan/ArticleSpider 未来是什么时代?是数据时代!数据分析服务、互联网金融,数据建模、自然语言处理、医疗病例分析……越来越多的工作会基于数据来做,而爬虫正是快速获取数据最重要的方式,相比其它语言,Pyth...

无 1万+

python分布式爬虫打造搜索引擎_第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询...

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询1、elasticsearch(搜索引擎)的查询elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据查询分类:基本查询:使用elasticsearch内置的查询条件进行查询组合查询:把多个查询条件组合在一起进行复合查询过滤:查询同时,通过fi...

weixin_39759107的博客 200

新版Scrapy打造搜索引擎,Python分布式爬虫技术

构建搜索引擎的下一步是建立一个查询表单,该表单将接收用户的搜索请求,展示结果并在数据库中搜索。可以使用Elasticsearch搜索引擎库,它是一个在全文搜索中查询数据的分布式搜索引擎,可根据文档索引搜索,通过对文档的分析来允许搜索结果排序。爬虫程序可以将数据存储在不同类型的数据库中,如XML,JSON,CSV,MySQL,Elasticsearch等。在这里,我们将MongoDB作为我们的数据库,将爬取的数据存储到MongoDB数据库中。下面,让我们来看看如何利用Scrapy创建一个基本的搜索引擎。

m0_56304762的博客 698

【Scrapy + Elasticsearch 搜索引擎实战】(一)准备工作

文章目录一、安装 Python二、安装 Scrapy三、安装 Elasticsearch四、安装 Kibana五、安装 ik 分词器六、安装 Redis七、安装 Django 一、安装 Python Python # 在 usr 目录下创建 python 目录 mkdir usr/python # 切换到 python 目录 cd python # 下载 Python3.9 压缩包 wget https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tgz #

Liu每天学一点 617

Python快速开发分布式搜索引擎Scrapy精讲—爬虫数据保存

注意:数据保存的操作都是在pipelines.py文件里操作的 将数据保存为json文件 spider是一个信号检测 在学习过程中有什么不懂得可以加我的 python学习资源qun,855 408 893 群里有不错的学习视频教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容 # -*- coding: utf-8 -*- # Def...

老K带你学Python 183

Python分布式爬虫实战:从Scrapy到搜索引擎完整开发指南

上可以快速体验这个项目,平台已经预置了Python环境和必要依赖,省去了繁琐的环境配置过程。实际测试发现,通过AI生成基础框架后,只需要专注于核心业务逻辑开发即可,特别适合快速验证爬虫方案。对于需要长期运行的爬虫系统,平台的一键部署功能非常实用,自动处理了服务发现、负载均衡等运维工作,让开发者可以更专注于数据处理逻辑。使用Elasticsearch建立全文索引。BloomFilter高效URL去重。多台爬虫节点并行抓取提高效率。管道实现数据清洗和存储。

BlackironWolf89的博客 431

Python分布式爬虫打造搜索引擎网站教程

Python分布式爬虫打造搜索引擎网站视频教程。请前往 临听学馆piaodoo.com 查看 整个开发过程中还会讲到很多爬虫开发的知识, 这些知识不管是对Web系统的理解还是面试都是非常重要的知识点,包括正则表达式、url去重的策略、深度优先和广度优先遍历算法及实现、session和cookie的区别以及如何通过多种方式去实现模拟登录。 课程大纲 说真的,你再也没有理由学不会爬虫了 从0开...

tgcf6698的博客 923

Python快速开发分布式搜索引擎Scrapy精讲—css选择器

css选择器 1、 2、 3、 ::attr()获取元素属性,css选择器 ::text获取标签文本 举例: extract_first(’’)获取过滤后的数据,返回字符串,有一个默认参数,也就是如果没有数据默认是什么,一般我们设置为空字符串 extract()获取过滤后的数据,返回字符串列表 在学习过程中有什么不懂得可以加我的 python学习资源qun,855 408 893 群里有不错...

老K带你学Python 204
上一篇: 对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心
下一篇: 基于百度云的OCR识别(Python)!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值