php网页采集 想对高效版

使用python爬虫批量下载美女图片 嗯,最近由于需要写一个爬虫小程序,所以学了一点爬虫。 可是只是按照教程学好没劲啊,于是就想着能不能做点小项目,爬取个美女图片呢。 对于新手来说,还是找一个html网站比较好 我们在这个例程使用的网站根目录是   www.tu11.com 本例程使用的python是3.6版本的 #coidng:utf-8 import requests from PIL import Image fro... 阅读详情

想对前面写的版本,极大的减小了IO开销,减小了对主机的解析

<?php
header("content-type: text/html; charset=utf-8");
class HttpWrap
{
    public $timeout=10;
    public $status='';

    public $host;
    public $port=80;
    private $ip;
    private $conn;
    private $path;
    private $url;
    private $scheme;

    public $http_method='GET';
    public $http_version="HTTP/1.1";
    public $agent="Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0";
    public $accept="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
    public $gzip="gzip";
    public $referer;
    public $cookie;
    public $submit_type="application/x-www-form-urlencoded";
    private $accept_language="zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3";
    public $connection="keep-alive";


    private $cmd_line;
    private $header;
    public $post_content;

    private $redirect;
    private $is_gzip;

    public $response_num;
    public $response_header;
    public $response_body_length=0;
    public $response_body;

    public $roll_link;
    public $roll_group;
    public $filename;
    public $encoding;

   public  function init($url)
    {
        $this->url=$url;
        $url_pair = parse_url($url);
        $this->host = $url_pair['host'];
        $this->path = $url_pair['path'];
        $this->scheme = $url_pair['scheme'];

        if(empty($this->ip))
        {
            $this->ip = gethostbyname($this->host);
        }

        if(!empty($url_pair['port']))
        {
            $this->port = $url_pair['port'];
        }
        $this->connect();
       // echo $this->status; exit();
        $this->sendRequest();
        //如果响应头部存在重定向,则对重定向发送请求
        if($this->redirect)
        {
            if(preg_match("#^http://".preg_quote($this->host)."#i",$this->redirect))
            {
                $this->referer=$this->host."/".parse_url($this->redirect)['path'];
                $this->init($this->redirect);
            }
        }
        if($this->roll_link)
        {
            $next_url = substr($this->url,0,strripos($this->url, '/')+1).$this->roll_link;
            //如果下一页等于当前页
            if(strtolower(trim(basename($this->url,'.html'))) == strtolower(trim(basename($next_url,'.html'))))
            {
               $next_group = $this->getNextGroup($this->response_body);
               echo "<font color='color'>即将采集下一组</font><br />";
               sleep(1);
               $this->init($next_group);
            }
            else
            {
                $this->init($next_url);
            }

        }
        else
        {
            die('没有下一页');
        }

    }

   private function connect()
   {
       $this->conn = fsockopen($this->ip,$this->port,$errno,$errstr,$this->timeout);
       if($this->conn)
       {
           $this->status = '链接成功';
           return true;
       }
       else
       {
            switch($errno)
            {
                case -3:
                        $this->status="创建socket链接失败";
                case -4:
                        $this->status="dns查询失败";
                case -5:
                        $this->status="链接被拒绝或超时";
                default:
                        $this->status="创建连接失败";
            }
            return false;
       }
   }
   private function sendRequest()
   {
       if(empty($this->path))
       {
           $this->path="/";
       }
       $this->cmd_line=$this->http_method." ".$this->path." ".$this->http_version."\r\n";

       if(!empty($this->host))
       {
           $this->header .= "Host: ".$this->host."\r\n";
       }

       if(!empty($this->agent))
       {
           $this->header .="User-Agent: ".$this->agent."\r\n";
       }

       if(!empty($this->accept))
       {
           $this->header .= "Accept: ". $this->accept ."\r\n";
       }
       if(!empty($this->gzip))
       {
           if ( function_exists("gzinflate") )
           {
                $this->header .= "Accept-encoding: gzip\r\n";
            }
            else
            {
                $this->status = "不支持压缩";
            }
       }
       if(!empty($this->referer))
       {
           $this->header .= "Referer: ".$this->referer."\r\n";
       }
       if(!empty($this->accept_language))
       {
           $this->header .= "Accept-Language: ".$this->accept_language."\r\n";
       }
       if(!empty($this->cookie))
       {
           if(!is_array($this->cookie))
           {
               $this->header .="Cookie: ".$this->cookie;
           }
           else
           {
               if(count($this->cookie) >0)
               {
                   $cookie = "Cookie: ";
                   foreach($this->cookie as $key => $val)
                   {
                       $cookie.=$key."=".urlencode($val).";";
                   }
                  $cookie = substr($cookie, 0, strlen($cookie)-1)."\r\n";
               }
               $this->header .= $cookie;
           }
       }
       if(!empty($this->submit_type))
       {
           $this->header .="Content-Type: ".$this->submit_type."\r\n";
       }
       if(!empty($this->post_content))
       {
           $this->header .= "Content-length: ".strlen($this->post_content)."\r\n";
       }
       if(!empty($this->connection))
       {
           $this->header .= "Connection: ".$this->connection."\r\n";
       }
       $this->header .="\r\n";
       //上面是HTTP请求头部信息
       //echo $this->cmd_line.$this->header.$this->post_content; exit();
       //发送请求
       $len = strlen($this->cmd_line.$this->header.$this->post_content);
      if($len != fwrite($this->conn, $this->cmd_line.$this->header.$this->post_content,$len))
      {
          $this->status = "发送请求failed";
      }

       //接受响应,每次读取一行内容,首先解析响应头
       while($response_header = fgets($this->conn, 1024))
       {
           if(preg_match("#^HTTP/#",$response_header))
            {
                //匹配状态数字,200表示请求成功
                if(preg_match("#^HTTP/[^\s]*\s(.*?)\s#",$response_header, $status))
                {
                        $this->response_num= $status[1];//返回代表数字的状态
                }
            }
            //echo $this->response_num; exit();
            // 判断是否需要重定向
            if(preg_match("#^(Location:|URI:)#i",$response_header))
            {
                // 获取重定向地址
                preg_match("#^(Location:|URI:)\s+(.*)#",trim($response_header),$matches);

                //如果重定向字段不包含主机名,不是以以://开头的,则拼接王完整的请求地址,模式+主机+端口
                if(!preg_match("#\:\/\/#",$matches[2]))
                {
                    // 补全主机名
                    $this->redirect = "http://".$this->host.":".$this->port;

                    //添加路径
                    if(!preg_match("|^/|",$matches[2]))
                           $this->redirect .= "/".$matches[2];
                    else
                           $this->redirect .= $matches[2];
                }
                else
                //包含完整的主机地址
                        $this->redirect = $matches[2];
            }

        //判断返回的数据的压缩格式
	if (preg_match("#^Content-Encoding: gzip#", $response_header) )
          {
                $this->is_gzip = true;
          }
          if(preg_match('#^Content-Length:\s*(\d+)#i', $response_header, $len))
          {
              $this->response_body_length = $len[1];
          }

        //解析完响应头部
        if(preg_match("/^\r?\n$/", $response_header) )
            break;

        $this->response_header[]=$response_header;
       }
       //可以成功返回响应头部信息,响应状态码也为200
      // var_dump($this->response_header); exit();

        if($this->response_num==200)
        {
            //问题出在这里
            //echo "ok"; exit();
            $sub_dir;
            $dirname;
            $path;
            $filename;
            if(preg_match('#/(\d+)/#', $this->url, $sub_dir))
            {
                $dirname = "./download/".$sub_dir[1];
            }
            else
            {
                $dirname = "./download/".date("Ymd");
            }

            $len=0;
            while($items = fread($this->conn, $this->response_body_length))
            {
                if(!is_dir($dirname))
                {
                    $path = mkdir($dirname,0777,true);
                }
                $filename = $dirname.'/'.basename($this->url);
                $len = $len+strlen($items);
                $this->response_body = $items;
                file_put_contents($filename, $items, FILE_APPEND);
                //这里必须判断读取的长度,不然会在这里阻塞
                if($len >= $this->response_body_length) break;

            }

            if($this->is_gzip)
            {
                $this->response_body = gzinflate ($this->response_body);
            }
            echo str_repeat("  ", 2048);
            echo "对链接".$this->url."发起请求<br />";
            $this->getRollLink($this->response_body);
           // sleep(1);
        }
   }
    private function getRollLink($filename)
   {
         $content='';
        if(empty($this->encoding))
        {
            $this->encoding=mb_detect_encoding(substr($filename,0,32), array('GB2312','GBK','UTF-8','BIG5','LATIN1'));
            if($this->encoding !='UTF-8')
            {
               $content = mb_convert_encoding($filename, 'UTF-8', $this->encoding);
            }
        }
       else
       {
           $content = mb_convert_encoding($filename, 'UTF-8', $this->encoding);
       }
       if(preg_match('#<ul\s+class="image"[^>]*?>.*?</ul>#is', $content, $match))
       {
           if(preg_match('#<a\s+href="([^"]+?)">下一页</a>#ui', $match[0], $next))
           {
                $this->roll_link =  trim($next[1]);
           }
       }
       else
       {
          $this->roll_link = false;
       }
   }
   private  function getNextGroup($filename)
   {
        if(empty($this->encoding))
        {
            $this->encoding=mb_detect_encoding(substr($filename,0,32), array('GB2312','GBK','UTF-8','BIG5','LATIN1'));
            if($this->encoding !='UTF-8')
            {
               $content = mb_convert_encoding($filename, 'UTF-8', $this->encoding);
            }
        }
       else
       {
           $content = mb_convert_encoding($filename, 'UTF-8', $this->encoding);
       }

	if(preg_match('#<ul\s+class="page"[^>]*?>.*?</ul>#is', $content, $match))
       {
			//echo $match[0]."<br />";
           if(preg_match_all('#<a\s+href="([^"]*?)">.*?</a>#usi', $match[0], $next))
           {
                //var_dump($next[1]);
                $choice;
                if(count($next[1])==2)
                {
                    $first = basename($next[1][0], ".html");
                    $second = basename($next[1][1], ".html");
                    //往前翻页,进入下一组
                    if(intval($first) < intval($second))
                    {
                            $choice = $first;
                    }
                    else
                    {
                            $choice = $second;
                    }
                    //h获取下一组
                    foreach($next[1] as $item)
                    {
                        if(strripos($item, $choice) !=false )
                        {
                            if(substr($item, 0,2) =='..')
                            {
                                    $link=  substr($item, 2);
                                    $sub_path = explode('/', $this->path);
                                    $url = $this->scheme.'://'.$this->host.'/'.$sub_path[1].$link;
                                    return $url;
                            }
                        }
                    }
                }
                //如果是最后一组,即没有下一组了
                else if(count($next[1])==1)
                {
                      if(substr($next[1][0],0,2)=='..')
                      {
                        $link = substr($next[1][0],2);
                        $sub_path = explode('/', $this->path);
                        $url = $this->scheme.'://'.$this->host.'/'.$sub_path[1].$link;
                        return $url;
                      }
                }
           }
           else
           {
               $this->status = "failed to match href";
           }

       }
       else
       {
            $this->status = "failed to match class=page";
       }
   }

}
ob_implicit_flush(true);
set_time_limit(0);
$url = $url = "http://www.mmkao.com/Beautyleg/201412/7066.html";
$http = new HttpWrap();
$http->cookie = "safedog-flow-item=41E2DBFEF121A8A2835ADB4476E5D3EC";
$http->referer = "www.mmkao.com";
$http->init($url);
?>


pyecharts 画图 pyechart 用于 web 绘图,是百度画图的一个高级接口 阅读详情

相关推荐

如何使用PHP进行爬虫开发和数据采集

通过使用PHP进行爬虫开发和数据采集,我们可以轻松地获取互联网上的数据并进行进一步的应用开发和数据分析。在实际应用中,我们还可以结合其他技术,如并发请求、分布式爬虫、反爬虫处理等,以应对各种复杂的情况。爬虫从一个或多个起始点(Seed)开始,以深度优先或广度优先搜索算法遍历互联网,并通过从网页中提取有用信息,将其存储在数据库或文件中。本文将介绍如何使用php进行爬虫开发和数据采集,让您在获取互联网数据方面更加游刃有余。以下是一个简单的示例,使用PHP实现爬虫开发和数据采集的过程。

tbprice的博客 873

BEAUTYLEG

http://blog.youkuaiyun.com/hellogv/archive/2008/12/15/3521119.aspx

iteye_11091的博客 4709

用Python的fengwo模块复刻通达信筹码峰(COST/WINNER),选股效率提升10倍

本文介绍了如何使用Python的fengwo模块高效复刻通达信的筹码峰(COST/WINNER)计算,显著提升选股效率。通过C++内核与多线程优化,fengwo模块将传统Python实现的数小时计算压缩至分钟级,解决了量化交易中的性能瓶颈问题。文章详细解析了筹码峰计算原理、fengwo模块的技术架构及实战应用,助力量化开发者构建高效选股系统。

weixin_29062823的博客 438

scrapy--Beautyleg

  很早就开始关注:Beautyleg高清丝袜美腿.关注之后开始觉得打开了新世界的大门,如果有相同观点的,那么你很有品味.说真的,学习爬虫的动力之一就是想把里面的图片爬取下来。哈哈哈!!! 给大家放点爬取完的图片,激励下大家赶紧动手。嘿嘿嘿 1.Beauty.py # -*- coding: utf-8 -*- import scrapy from scrapy.pi...

weixin_30347009的博客 4756

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1920

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1613

python自学免费图片_自学Python----爬取Beautyleg图片

[Python] 纯文本查看 复制代码import requestsimport osimport timefrom lxml import etree'''xpath获取的element对象返回的是个字典.tag(标签名称) .attrib(标签属性) .text(标签文本)'''def get_xpath_text(url,headers):response = requests.get(u...

weixin_39614276的博客 5449

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4725

php入库源码,php网页采集入库程序代码-PHP源码

网页采集现在用到最多是工具了,像最受站长欢迎的就是火车头了,但有一些站长喜欢使用网页来自定义采集了,下面一起来看一个php 网页采集入库程序代码《script》ec(2);《script》php 网页采集程序总结,最近帮朋友做了个采集程序以www.xxxx.com/shop_list.php?page=1&province=%B1%B1%BE%A9为例%B1%B1%BE%A9是gb2312...

weixin_35835018的博客 983

Yolov8-pose关键点检测:训练实战篇 | 手部关键点检测

yolo8-pose实战检测手部关键点并优化。

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

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 740

PHP编程语言助力网页数据采集,高效实现即时更新需求

随着互联网的迅猛发展,快速获得精确信息愈发关键。为此,掌握高效率的收集网页文章的技巧对各位站长及开发人员来说具有重要性。本次讲座,将为大家介绍一款实用高效的Php(编程语言)采集工具,让您轻松实现即时更新文章的需求。1.优采云的诞生优采云这一款专为网页数据采集优化的好帮手,尽显专业技术实力

Xgvafdj52的博客 966

JavaFX 概述

要从 JavaFX 中充分受益,了解 JavaFX 的设计方式以及对 JavaFX 包含的功能有一个很好的概述是很有用的。本文的目的是为您提供 JavaFX 概述。本文将首先介绍一般的 JavaFX 设计,然后介绍 JavaFX 中的各种特性。如果您熟悉 Flash/Flex,您会发现 JavaFX 在某种程度上受到了 Flash/Flex 的启发。JavaFX 中也有一些相同的想法。一般来说,JavaFX 应用程序包含一个或多个对应于窗口的阶段。每个阶段都有一个场景。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 407

php网页采集标题,php利用fopen实现简单的网页采集程序

这个采集程序是一个非常简单的程序了,个人认为不适合于大量数据采集了单页还是没有问题了,因为fopen函数对于远程文件操作与多线程时是非常的不理想的,这个只是一个作者写的觉得好玩合出来了。 代码如下 复制代码 /*** 根据URL采集网页内容** @param string $url 链接地址* @return string*/private functio...

weixin_34049581的博客 182

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

php出入库单生成源码,php 网页采集入库程序代码

网页采集现在用到最多是工具了,像最受站长欢迎的就是火车头了,但有一些站长喜欢使用网页来自定义采集了,下面一起来看一个php 网页采集入库程序代码php 网页采集程序总结,最近帮朋友做了个采集程序以www.xxxx.com/shop_list.php?page=1&province=%B1%B1%BE%A9为例%B1%B1%BE%A9是gb2312的转码,例如$aa=”北京”;$aa = @...

weixin_33099015的博客 1160

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

php多线程采集网页数据-php采集网页-php爬虫视频教程8

前面的课程, 使用php采集时, 我们都是使用单线程。 当要采集的数量特别大时, 如果能够使用多线程采集, 无疑效率会提高不少。 最后一节课程, 跟着子恒老师学习怎么使用php进行多线程采集网页… php多线程采集网页数据视频教程在线观看

571

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

高效文章采集的秘密:php代码写作攻略

小编经验分享:php代码实现高效文章采集的秘密概述:在互联网时代,文章采集是一项重要的任务。php作为一种强大的脚本语言,可以帮助我们实现高效的文章采集。本文将分享我在使用php代码进行文章采集过程中总结出的9个关键点,希望能对广大读者有所帮助。1.确定采集目标:在开始采集之前

wanghui19880909的博客 828

PHP文章采集插件:智能高效,数据一键聚合

了解PHP文章采集插件一款名为“PHP文章采集插件”的软件,擅长采集、解析及储存互联网文章内容,能协助使用者迅速获取网页信息,并进行结构化整理以适应后期调整与分析需求。此插件依托PHP编程语言构建,具有极强的灵活性与拓展性,被广泛运用于新闻聚合、内容管理以及数据分析等不同领域。在实践运用中

oUY5dETx的博客 1096

如何使用Goutte:简单高效的PHP网页爬虫工具完全指南

Goutte是一款轻量级的PHP网页爬虫工具,它提供了简洁的API让开发者能够轻松实现网页数据抓取、表单提交和链接提取等功能。无论是新手还是有经验的开发者,都能快速上手并利用Goutte构建强大的网络爬虫应用。 ## 为什么选择Goutte进行网页抓取? Goutte作为一款专注于网页抓取的PHP库,具有以下显著优势: - **简单易用**:提供直观的链式调用API,无需复杂配置即可开始抓取

gitblog_00845的博客 1025

php抓取网页图片

PHP是一门很容易上手的Web编程语言。PHP学习成本很低,能够迅速开发各种Web应用,是一个很优秀的工具。 尽管很多人觉得PHP缺点很多,quick and dirty 之类的,但是“这个世界上只有两种编程语言,一种是饱受争议的,一种是没人用的”,不是吗?只要能够把事情做好的工具,就是好工具。PHP就是这么一个优秀的语言工具。

NiceGY 3833

PHP采集插件QueryList实践(一)

一: 需求背景 需要采集某个网站的数据、文章等等,同时在还需要对采集到内容进行解析,分类等操作。在解析分类的过程中,大多数PHPer使用正则的方式来分析爬到的数据,增加了难度的同时效率也没有得到提升,用QueryList则可以很简单的结果问题。 二:什么是QueryList? QueryList是一个基于phpQuery的开源项目,可以让PHPer在采集信息时对内容进行一个类似JQuery的DOM操作,十分简洁方便,贴合平常开发的习惯。 三:下载安装 (1) 环境要求,安装方式有两种,选中以下任意一种都可以

王兆镇的博客 1255

用PHP的CURL写的一个采集Discuz的例子

以前写ASP的时候,要实现采集功能,那简直就是一个浩浩荡荡的大工程,现在用PHP简单多了,轻轻松松简简单单就能把ASP长篇大论才能实现的功能搞定.这是我用PHP的CURL写的一个采集Discuz的例子,附带模拟登陆,如果不需要模拟登陆就可以直接用File_Get_Contents来采那会更简单.<?phpset_time_limit(0);//cookie保存目录$cookdi...

243

php采集内容,PHP实现一个简单的数据采集

引言​ 说到数据采集大家首先都会想到python,代码简洁,高效,很容易就可以实现数据采集。​ 那PHP如何实现数据采集呢?非常简单。概念​ 那什么是数据采集呢?以下是百度百科的介绍:​ 数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。你可以简单的理解为偷别人网站的数据。需...

weixin_30974373的博客 523

php安装一个采集插件,PHP采集插件QueryList实践教学(一)

一: 需求背景作为一个开发人员,在日常开发中或多或少多会遇到采集的需求,需要采集某个网站的数据、文章等等,同时在还需要对采集到内容进行解析,分类等操作。在解析分类的过程中,大多数PHPer使用正则的方式来分析爬到的数据,增加了难度的同时效率也没有得到提升,用QueryList则可以很简单的结果问题。二:什么是QueryList?QueryList是一个基于phpQuery的开源项目,可以让PHPe...

weixin_35960434的博客 641

最新版小说源码PHP全自动采集

HTML用于构建网页的基本结构,CSS用于美化和布局,而JavaScript则用于实现网页的交互功能,如翻页效果、评论功能等。MySQL是一个开源的关系型数据库管理系统,支持大量的并发连接,非常适合存储和管理小说网站的用户信息、小说内容等数据。但需要注意的是,采集内容时必须确保拥有合法的采集权限,并遵守相关法律法规。将采集到的数据存储到数据库中。在插入数据之前,我们需要对采集到的数据进行清洗和格式化,以确保数据的准确性和一致性。首先,我们需要分析目标网站的HTML结构,确定要采集的数据的位置和格式。

xiaobozhou的博客 1665
上一篇: php网页采集 修正版
下一篇: php网页采集 修改版
错_对
博客等级 码龄16年 68粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值