爬虫基础urllib 之(三) --- urllib模块

Mac本 需导入ssl

1 import ssl
2 ssl._create_default_https_context = ssl._create_unverified_context 

urllib.request模块 方法

从urllib中导入请求模块 编写url

1 from urllib import request      # 导入request模块
2 # 或者 import urllib.request
3 url = "http://www.baidu.com/"   # 编写 url 

1. urlopen( ) 方法

用于打开一个远程的url连接,并且向这个连接发出请求,获取响应结果。返回的结果是一个http响应对象,这个响应对象中记录了本次http访问的响应头和响应体

urllib.request.urlopen 参数介绍:
urllib.request.urlopen(  url,   data=None,   [timeout, ]*,  cafile=None, capath=None, cadefault=False, context=None)

  • url参数使用
 1 response = request.urlopen(url=url)
 2 
 3 print(response)    # 获取响应,结果为:<http.client.HTTPResponse object at 0x10be801d0>
 4 # 获取响应头
 5 print(response.headers)   # 获取响应头
 6 print(response.url)       # 获取响应url 
 7 print(response.status)    # 获取响应状态码
 8 # 获取响应体
 9 print(response.read())                  # 获取响应体 二进制字符串  
10 print(response.read().decode("utf-8"))  # 对响应体进行解码
11 # 按行读取
12 print(response.readline())      # 读取一行
13 print(response.readline())      # 读取下一行
14 print( response.readlines())    # 读取多行。得到一个列表 每个元素是一行 
  •  data参数使用

上述例子是通过 get请求 获得百度,下面使用urllib的 post请求。

添加data参数的时候就是以post请求方式请求,若没有data参数就是get请求方式

1 import urllib.request
2 import urllib.parse  # urllib.parse模块,后面有介绍
3 #或者 from urllib import request, parse
4 data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8') 5 # 用urllib.parse模块,通过bytes(urllib.parse.urlencode())可以将post数据进行转换并放到urllib.request.urlopen的data参数中。这样就完成了一次post请求。 6 7 response = urllib.request.urlopen('http://httpbin.org/post', data=data) 8 print(response.read())
  • timeout参数使用

在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,所以这个时候我们需要给
请求设置一个超时时间,而不是让程序一直在等待结果。所以使用 timeout参数设置超时时间

1 import urllib.request
2 
3 response = urllib.request.urlopen('http://httpbin.org/get', timeout=1)
4 print(response.read())   # 正常结束,控制台显示:socket.time : timed out
5 
6 response = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)
7 print(response.read())   # 超时,控制台显示:urllib.error.URLErrot : <urlopen error timed out>

2. urlretrieve(url =”xxx“, filename = ”xxx“) 方法

打开url这个连接 并且发起请求,获得响应并把响应结果保存到filename文件中

1 res3 = request.urlretrieve(url=url,filename="./baidu.html") 
2 print(res3)     # 获取url 保存到baidu.html文件中 并打印

3. Request(url=url, data=data, method='POST') 方法

web开发中,同一个url往往可以对应若干套不同的数据(或者界面,如手机、电脑),后台可以根据发起请求的前端的用户代理的不同,而决定应该给前端做出什么样的响应,如果检测到没有用户代理可以拒绝访问。

有很多网站为了防止程序爬虫爬网站造成网站瘫痪,会需要携带一些headers头部信息才能访问,最长见的有user-agent参数所以需要伪装请求头,去访问目标站。

urllib.ruquest.Request 参数介绍:

urllib.ruquest.Request(url=url,headers=headers,data=data,method='POST')

  • headers 参数使用

给请求添加头部信息,定制自己请求网站时的头部信息,使得请求伪装成浏览器等终端

1 req = request.Request(url=url,headers={'UserAgent':'Mozilla/5.0 (Windows NT 10.0; Win64;x64)AppleWebKit/537.36 (KHTML, likeGecko)Chrome/71.0.3578.80Safari/537.36'})
2 
3 res = request.urlopen(req)  # 用加入了请求头的请求对象发起请求
4 print(res.status)           # 打印状态码           

添加请求头的post请求方式

 1 from urllib import request, parse
 2 
 3 url = 'http://httpbin.org/post'
 4 headers = {
 5     'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
 6     'Host': 'httpbin.org'}
 7 dict = { 'name': 'taotao'}
 8 
 9 data = bytes(parse.urlencode(dict), encoding='utf8')
10 req = request.Request(url=url, data=data, headers=headers, method='POST')
11 response = request.urlopen(req)
12 print(response.read().decode('utf-8')

添加请求头的第二种post方式, 好处是自己可以定义一个请求头字典,然后循环进行添加

 1 from urllib import request, parse
 2 
 3 url = 'http://httpbin.org/post'
 4 dict = {'name': 'Germey'}
 5 
 6 data = bytes(parse.urlencode(dict), encoding='utf8')
 7 req = request.Request(url=url, data=data, method='POST')
 8 req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
 9 response = request.urlopen(req)
10 print(response.read().decode('utf-8'))

 4. rulllib.request.ProxyHandler( ) 方法

高级用法 - 代理 :各种handler代理

 rulllib.request.ProxyHandler( ) 方法设置代理

urllib.request.build_opener(handler)  创建一个opener携带handler

opener.open(req) 用opener发起请求

设置代理,网站它会检测某一段时间某个IP 的访问次数,如果访问次数过多它会禁止访问,所以这个时候需要通过设置代理来爬取数据 

 1 import urllib.request,urllib.parse
 2 
 3 url = "https://www.baidu.com/s?wd=ip"
 4 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
 5 
 6 req = urllib.request.Request(url=url,headers=headers) # 创建一个请求对象
 7 handler = urllib.request.ProxyHandler(                # 创建一个handler
 8         {"http":'122.241.88.79:15872'  
 9          "https":'122.241.88.79:15872'})  
10 
11 opener = urllib.request.build_opener(handler)  # 创建一个opener携带handler
12 res = opener.open(req)                         # 用opener发起请求
13 
14 with open("ip.html",'wb') as fp:
15     fp.write(res.read())            
会话处理机制

cookie中保存中我们常见的登录信息,有时候爬取网站需要携带cookie信息访问,这里用到了http.cookijar,用于获取cookie以及存储cookie

「采用handler+opener机制处理会话问题」导入cookie初始化工具,处理cookie的时候这个对象就可以存储cookie信息

1 from urllib import request,parse
2 from http import cookiejar
3 
4 cookie = cookiejar.CookieJar()             # 初始化一个cookie对象
5 handler = request.HTTPCookieProcessor(cookie)    # 创建一个handler对象,携带上cookie
6 opener = request.build_opener(handler)        # 创建一个opener对象携带上handler 
7 
8 response = opener.open('http://www.baidu.com')   # 用opener来发起请求
9 print(response.read().decode('utf-8'))           # 此时发起的请求结束以后,相关的cookie信息就会被opener的handler通过cookiejar对象保存

cookie写入到文件中保存

方式一: http.cookiejar.MozillaCookieJar( )方式

 1 import http.cookiejar, urllib.request
 2 
 3 filename = "cookie.txt"
 4 cookie = http.cookiejar.MozillaCookieJar(filename)
 5 
 6 handler = urllib.request.HTTPCookieProcessor(cookie)
 7 opener = urllib.request.build_opener(handler)
 8 response = opener.open('http://www.baidu.com')
 9 
10 cookie.save(ignore_discard=True, ignore_expires=True)

方式二: http.cookiejar.LWPCookieJar( )方式

 1 import http.cookiejar, urllib.request
 2 
 3 filename = 'cookie.txt'
 4 cookie = http.cookiejar.LWPCookieJar(filename)
 5 
 6 handler = urllib.request.HTTPCookieProcessor(cookie)
 7 opener = urllib.request.build_opener(handler)
 8 response = opener.open('http://www.baidu.com')
 9 
10 cookie.save(ignore_discard=True, ignore_expires=True)

cookie从文件中读取,用哪种方式写入的,就用哪种方式读取

方法:cookie.load( )方式 

1 import http.cookiejar, urllib.request
2 
3 cookie = http.cookiejar.LWPCookieJar()
4 cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
5 
6 handler = urllib.request.HTTPCookieProcessor(cookie)
7 opener = urllib.request.build_opener(handler)
8 response = opener.open('http://www.baidu.com')
9 print(response.read().decode('utf-8'))


urllib.parse模块 方法

url解析模块

1. urlparse( ) 方法 拆分url

URL解析函数侧重于将URL字符串拆分为其组件,或者将URL组件组合为URL字符串

拆分的时候协议类型部分就会是scheme=“ ”指定的部分。如果url里面已经带了协议,scheme指定的协议不会生效

urllib.parse.urlparse(urlstring, scheme=" ", allow_fragments=True)

urlparse("www.baidu.com/index.html;user?id=5#comment",scheme="https")

1 from urllib.parse import urlparse
2 
3 # 对传入的url地址进行拆分; 可以用 scheme=“ ” 指定协议类型:
4 result = urlparse("http://www.baidu.com/index.html;user?id=5#comment")
5 print(result)  

结果:

2. urlunparse( ) 方法  拼接url

功能和urlparse的功能相反,它是用于拼接 

1 from urllib.parse import urlunparse
2 
3 data = ['http','www.baidu.com','index.html','user','a=123','commit']
4 print(urlunparse(data))

3. urljoin( ) 方法  拼接url

拼接的时候后面的优先级高于前面的url

 1 from urllib.parse import urljoin
 2 
 3 print(urljoin('http://www.baidu.com', 'FAQ.html'))
 4 # 结果 :http://www.baidu.com/FAQ.html
 5 print(urljoin('http://www.baidu.com', 'https://pythonsite.com/FAQ.html'))
 6 # 结果 :https://pythonsite.com/FAQ.html
 7 print(urljoin('http://www.baidu.com/about.html', 'https://pythonsite.com/FAQ.html'))
 8 # 结果 :https://pythonsite.com/FAQ.html
 9 print(urljoin('http://www.baidu.com', '?category=2#comment'))
10 # 结果 :http://www.baidu.com?category=2#comment
11 print(urljoin('www.baidu.com#comment', '?category=2'))
12 # 结果 :www.baidu.com?category=2

 4. urlencode( ) 方法 

这个方法可以将字典转换为url参数

对url进行编码,因为urllib这个框架中的url中不能出现汉字,只能出现ascii码字符

 1 from urllib import parse
 2 url = "https://www.baidu.com/s?"
 3 
 4 # 把参数写成字典的形式
 5 dic= {"ie":"utf-8","wd":"奔驰"}
 6 # 用parse的urlencode方法编码
 7 parames = parse.urlencode(dic)
 8 # 将编码以后的参数拼接到url中
 9 url += parames
10 print(request.urlopen(url=url))

urllib.error模块 方法

有时候通过程序访问页面的时候,有的页面可能会出现类似404,500等错误
这时就需要我们捕捉异常,在urllb异常中有两个异常错误:URLError 和 HTTPError。 HTTPError 是 URLError 的子类

1. error.URLError 异常

URLError里只有一个属性:reason,即抓异常的时候只能打印错误信息

1 from urllib import request,error
2 
3 try:
4     response = request.urlopen("http://pythonsite.com/1111.html")
5 except error.URLError as e:
6     print(e.reason)

2. error.HTTPError 异常

HTTPError里有三个属性:code,reason,headers,即抓异常的时候可以获得code,reson,headers三个信息

 1 from urllib import request,error
 2 try:
 3     response = request.urlopen("http://pythonsite.com/1111.html")
 4 except error.HTTPError as e:
 5     print(e.code)
 6     print(e.reason)
 7     print(e.headers)
 8 except error.URLError as e:
 9     print(e.reason)
10 else:
11     print("reqeust successfully")

 

转载于:https://www.cnblogs.com/TMMM/p/10799318.html

Python爬虫原理与常用模块——urllib与反爬策略 1 http协议 1.1 简介 1.HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。 2.HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 1.2 工作原理 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器有:Apache服务器,I 阅读详情

相关推荐

[Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家。第四篇文章将开启网络爬虫之旅,首先介绍基础知识及正则表达式的爬虫,希望对您有所帮助,文章中不足之处也请海涵。

杨秀璋的专栏 2万+

深度学习--函数的用法

import osos.environ['TF_CPP_MIN_LOG_LEVEL']='1' # 默认,显示所有信息os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 只显示warning 和erroros.environ['TF_CPP_MIN_LOG_LEVEL']='3' # 只显示error注意:紧跟在import之后。;https://blog.youkuaiyun.com/swan777/article/details/89040802;https://blog.csdn.

qq_43436296的博客 489

2026款拯救者Y9000P深度学习环境配置指南

这套环境适配 2026 款拯救者 Y9000P 的 RTX5060,可直接用于 CV(图像分类、检测)、NLP 等 PyTorch 深度学习任务,GPU 利用率正常,无兼容性问题。后续复现环境时,直接按本文步骤操作即可~

大糊涂虫 2637

python3 ssl经常性报错解决方案

2.7.9版本后,使用urlopen打开https网站时会要求验证一次ssl,增加如下语句,可以跳过此次验证import ssl ssl._create_default_https_context=ssl._create_unverified_context 我也不是很清楚原因,查询ssl代码, 554行有代码_create_default_https_context = create_defau

bladeyul的博客 2333

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 503

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 808

import sslssl._create_default_https_context = ssl._create_unverified_context

# 全局取消证书验证 import ssl ssl._create_default_https_context = ssl._create_unverified_context 参考:urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]_彭世瑜的博客-优快云博客报错urllib.error.URLError: &lt;urlopen error [SSL: CERTIFICATE_VERIFY_FAIL.

kkqqqqqllll的博客 4290

C#实战:基于ONNX与SCRFD/ArcFace的高效人脸识别系统开发

本文详细介绍了如何在C#环境中,利用ONNX Runtime高效部署SCRFD人脸检测与ArcFace人脸识别模型,构建一个完整的、高性能的人脸识别系统。内容涵盖环境搭建、模型推理、人脸对齐、特征提取等核心模块,并提供了从Demo到生产系统的优化思路与实战代码,为.NET开发者提供了一套开箱即用的解决方案。

weixin_29061821的博客 488

python urllib3 post ssl,python post https报错解决方案

转自网络,备忘。对我有用的就一行代码:ssl._create_default_https_context = ssl._create_unverified_context这最近人工智能比较火,看了一下大多都是python的代码,最近看看python 的代码,一出来就遇到了坑,空格的问题先不说了直接上代码吧python python3 log_python.pyTraceback (most rec...

weixin_36360543的博客 713

js逆向实战:爬取淘宝男装商品

本文介绍了一个淘宝商品数据爬取程序的技术实现方案。该程序通过分析淘宝H5页面接口,实现了商品名称、价格、销量等关键信息的抓取,并支持图片下载功能。核心内容包括:1. 使用Request库发送HTTP请求获取数据;2. 通过逆向分析淘宝的签名算法(MD5加密)生成合法请求;3. 解析JSON数据并提取商品信息;4. 处理分页参数实现多页数据爬取;5. 将数据保存为CSV文件并下载商品图片。程序还实现了反爬虫绕过、错误处理、文件管理等辅助功能,完整展示了从数据采集到存储的全过程。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1573

智能解译城市进程:遥感影像建筑物提取研究全景与前沿进展(数据集及代码)

随着全球城市化进程的加速,高效、精准地监测城市建筑物分布对城市规划、灾害评估、人口估算及智慧城市建设具有重要意义。传统的人工测绘方法耗时费力,难以满足大范围、动态更新的需求。而遥感影像建筑物提取技术,借助深度学习与计算机视觉,能够自动化识别并提取建筑物轮廓,极大地提升了城市信息获取的效率和精度。首先,建筑物提取是遥感影像解译的核心任务之一。

hanfeng5268的博客 591

c++怎么从主网页中读取子网站_今天教大家一招最简单的爬虫!利用urllib进行简单的网页抓取!...

(1)protocol:第一部分就是协议,例如百度使用的就是https协议;(2)hostname[:port]:第二部分就是主机名(还有端口号为可选参数),一般网站默认的端口号为80,例如百度的主机名就是www.baidu.com,这个就是服务器的地址;(3)path:第三部分就是主机资源的具体地址,如目录和文件名等。网络爬虫就是根据这个URL来获取网页信息的。简单爬虫实例在Python3.x中...

weixin_39759589的博客 305

少儿学编程系列--使用递归画出龙形曲线DragonCurve

龙形曲线(Dragon Curve) 龙形曲线(Dragon Curve)又叫分形龙,是一种自相似碎形曲线的统称,因形似龙的蜿蜒盘曲而得名 使用黄金比例画龙形曲线 根据黄金比例画一条龙曲线。每次递归,第一步向左转32.89度,移动0.74倍原距离;第二个递归步骤向右转46.99度,移动原来距离的0.55倍。请查看这个网页(https://larryriddle.agnesscott.org/ifs/heighway/goldenDragon.htm)了解关于龙形黄线数学的细节 龙形曲线效果 .

penriver的博客 2297

运维学python之爬虫基础篇(三)urllib模块高级用法

1 添加头信息 1.1 User-Agent 有些网站,如果你按照urllib.request.urlopen('https://www.baidu.com') 这种方式打开,服务器有可能不会响应,所以要完全模仿浏览器访问,我们需要加入User-Agent信息,示例代码如下: from urllib import request req = request.Request('https://ww...

weixin_33724570的博客 111

visio安装包

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python爬虫需要学哪些知识_python爬虫第一篇~预备知识

在学习了python基础后,需要去做下最简单的实战,从目标网页上爬取一些资料学习最简单的爬虫,需要至少具备哪些知识点1:html知识2:基本的python知识3:爬虫第三方工具----------------------------------------1:html知识这样,我们就先来学习一下网页。我们每天都看了很多的网页。其实我们看到的内容是经过浏览器处理的。我们爬取网页的时候,不是去和经过浏...

weixin_39603217的博客 181

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

网络爬虫【爬虫库urllib】

网络爬虫python库urllib

2401_88885149的博客 5011

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

爬虫基础(三)——python爬虫常用模块

3.1python网络爬虫技术核心 3.1.1 python网络爬虫实现原理 第一步:使用python的网络模块(比如urblib2、httplib、requests等)模拟浏览器向服务器发送正常的HTTP(或HTTPS)请求。服务器响应后,主机将收到包含所需信息的网页代码。 第二步:主机使用过滤模块(比如lxml、html.parser、re等)将所需信息从网页代码中过滤出来。 第一步为了模拟浏览器,可以在请求中添加报头(Header)和Cookies。为了避开服务器的反爬虫,可以利用代理或间隔一

weixin_46310648的博客 7402

网络爬虫——urllib(5)

❤️❤️❤️上一篇我们讲解有关ajax的相关案例,下面我们来学习新的关于urllib的知识。

冷兮雪的博客 4501

python网络爬虫实战教学——urllib的使用(1)

首先介绍一个Python库叫作urllib,利用它就可以实现HTTP请求的发送,而且不需要关心HTTP协议本身甚至更底层的实现,我们要做的是指定请求的URL`请求头`请求体等信息。此外urlljb还可以把服务器返回的响应转化为Python对象,我们通过该对象便可以方便地获取响应的相关信息’如响应状态码、响应头、响应体等。

阿极的博客 9383

python网络爬虫实战教学——urllib的使用(2)

掌握urllib库中的异常处理和URL解析功能,对于进行网络编程和网页数据抓取来说是非常重要的。它们能够帮助我们编写更加健壮和灵活的程序,应对各种网络请求场景。

阿极的博客 9434

python网络爬虫(urllib,urllib,requests,bs4)

python网络爬虫一、网络爬取的概述与分类1、网络爬虫的概述2、网络爬虫的分类3、网络爬虫的基本原理二、网络爬取的基本技术1、网络的基本请求(1)、urllib模块(2)、urllib3模块(3)、requests模块2、请求头部处和超时处理3、代理服务4、HTML解析之BeautifulSoup 一、网络爬取的概述与分类 1、网络爬虫的概述 网络爬虫是指按照指定的规则,自动流量或抓取互联网中的信息。 2、网络爬虫的分类 通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫 3、网络爬虫的基本原理

giun的博客 1321

【Datawhale零基础网络爬虫学习笔记】

本文介绍了零基础网络爬虫的基本概念和学习笔记。爬虫技术可用于自动化获取网络数据,但需遵守robots.txt规范。文章对比了HTTP与HTTPS协议,解释了Web请求过程和服务器渲染与客户端渲染的区别。通过urllib模块示例演示了简单爬虫的实现,并介绍了requests模块的使用。此外,还探讨了请求与响应机制,包括请求头、响应状态码等关键要素,为后续爬虫学习奠定基础。

m0_53118662的博客 3500

网络爬虫之urllib库

网络爬虫是获取和利用网页数据的重要工具。在Python中,urllib库是一个强大的工具,可以帮助我们轻松地构建简单的网络爬虫。通过使用urlopen函数,我们可以获取网页的内容,并使用try/except语句处理可能出现的异常。虽然urllib库本身不提供HTML解析功能,但我们可以结合其他库如BeautifulSoup来提取我们感兴趣的信息。通过学习urllib库,我们可以深入了解网络爬虫的基本原理和工作方式。

zwkkkhhh的博客 1555

爬虫基础知识(web前端,请求模块urllib,重构user_agent)

网络爬虫(又被称作网络蜘蛛,网络机器人,网页追逐者),可以按照一定的规则(网络爬虫的算法)自动浏览或抓取网络中的信息,利用python可以很轻松的编写爬虫程序或者脚本。

hacker707的博客 4609
上一篇: 爬虫项目 --- urllib 和 正则re
下一篇: 爬虫基础Requests 之(四) --- Requests模块
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值