当前位置: 首页 > news >正文

【python】网络爬虫与信息提取--requests库

导学   

         当一个软件想获得数据,那么我们只有把网站当成api就可以

        requests库:自动爬取HTML页面,自动网络请求提交

        robots协议:网络爬虫排除标准(网络爬虫的规则)

        beautiful soup库:解析HTML页面

工具:

        IDLE:适用于python入门,功能简单直接,300+行代码以内

        Sublime Text编译器:专门为程序员开发的第三方专用编程工具,专业编程体验

        Wing:公司维护,工具收费;调试功能丰富;版本控制,版本同步;适合多人共同开发

        PTVS:微软公司维护、调试功能丰富

        PyCharm:简单,集成度高,适合较复杂工程

一、requests库

1.安装:

        以管理员身份运行命令提示符,输入 pip install requests 后回车

2.使用:

        启动idle(IDLE是Python自带的IDE;打开IDLE:按Win键,输入“idle”,回车;运行:F5)

        测试一下(以访问百度主页为例子),状态码为200,表示访问成功

3.requests库的7个主要方法

        这7个常用方法,除了第一个requests.request()方法是基础方法外,其他的6个方法都是通过调用requestsequest()方法实现的

4.requests.get(URL)

        完整的使用:requests.get(url,params=None,**kwargs);其中url是拟获取页面的url链接,params指的是url中的额外参数,字典或者字节流格式,可选;kwargs是12个控制访问的参数

        作用:获取一个网页 r=requests.get(url)

        原理:构造一个向服务器请求资源的request对象(这个对象由requests库自动生成),返回的Response对象包含从服务器返回的所有资源.

        

Response对象的主要属性

                 r.encoding的编码方式是从http header中的charset字段获得.如果http header中有这样一个字段,说明我们访问的服务器对它的资源的编码是有要求的,这样的要求会返回回来,存在r.encoding中。但是,不是所有服务器都会对它的资源编码有相关的要求,所以,如果header中不存在charset,则默认编码为ISO-8859-1,但这样的编码并不能解析中文,所以requests库提供了一个备选编码r.apparent_encoding,实际上这个编码做的内容是根据http的内容部分而不是头部分,去分析内容文本中 可能的编码方式。

5.爬取网页的通用代码框架

        代码框架其实就是一组代码,它可以准确可靠的爬取网页内容。

        我们爬取的时候喜欢用requests.get(url)获取url的相关内容,但是这样的语句并不是一定成立的,因为网络连接有风险,所以这样的语句它的异常处理很重要

        补充一个response异常:r.raise_for_status()--判断返回的response的类型,如果不是200,产生异常requests.HTTPError

6.HTTP协议以及Requests库方法

        HTTP,超文本传输协议。是一个基于“请求与响应”模式的、无状态(第一次请求与第二次请求之间并没有相关的关联)的应用层协议(指的是该协议工作在TCP协议之上)。HTTP协议采用URL作为定位网络资源的标识。

        HTTP URL的理解:URL是通过HTTP协议存取资源的Internet路径,URL对应一个数据资源。

        URL格式:http://host[:port][path]

        host:合法的Internet主机域名或IP地址

        port:端口号,缺省端口为80

        path:请求资源的路径

        head()方法用来展示反馈的头部信息的内容,当我们想试图用r.text展示它的全部内容,会发现内容是空的。作用:可以用很少的网络流量获取网络资源的概要信息。

        post方法可以向服务器提交新数据。这里我们首先建立了一个字典叫payload,它里面包含两个键值对,然后用post方法去提交这样的一个字典,接着看下返回的内容,发现键值对被放在form下,说明当我们post一个字典或者post键值对的时候,那么键值对会默认的被存储在表单的字段下。

        当我们post一个字符串的时候,我们会发现字符串被存到了data相关的字段下。

        post根据我们提交的内容不同,在服务器上会做数据的相关的整理

        

        put方法与post方法类似。

7.Requests库主要方法解析

        事实情况是,由于网络安全的限制,我们很难向一个url去发起post,put,patch,delete请求,因此我们在爬虫时,经常使用的是get和head方法。

7.1 request

        完整格式:requests.request(method,url,**kwargs)

        method:请求方,对应get/pu/post等七种

        url:拟获取页面的url链接

        **kwargs:控制访问的参数,共13个

     options其实就是向服务器获取一些服务器跟客户端能够打交道的参数,这里面并不与获取资源直接相关,我们平时使用较少。

        比如params=kv,可以实现一些键值对增加到url中,那么使得url再去访问时,不只访问的是这个资源,而同时代入了一些参数,那服务器就可以接受这些参数,并根据这些参数筛选部分资源。

        data:向服务器提供或提交资源时使用,当构建键值对的时候,把它作为data的一部分去提交。我们所提交的键值对,并不直接放在url链接,而是放在url链接对应位置的地方。

        比如,当我们用构建一个键值对,然后我们可以把它的值给json参数,那么这个键值对就复制到服务器的json域上。

        headers对应了向某一个url访问时,所发起的http的头字段。简单说,我们可以用这个字段来定制访问某一个url的http协议头。我们可以定义一个字典,然后去修改HTTP协议中的user-agent字段,那么在访问一个链接时,我们可以把这样的字段赋给header,此时,header再向服务器访问时,服务器看到的user-agent字段就是修改后的内容。

        cookies:指的是从http协议中解析cookie,那么它可以是字典也可以是cookieJar的形式

        auth字段是一个元组类型,与cookies都是高级功能。

        files:字典类型,它是向服务器传输文件时使用的字段。定义一个字典,以对应的文件为键值对,用open的方式打开这个文件,并把这个文件与file做一个关联,同时对应到相关的url上,这样的方法我们可以向某一个链接提交某一个文件。

         在规定timeout时间内,我们的请求内容没有反馈回来,那么它将产生一个timeout的异常

        proxies:可以为我们爬取网页设定相关的访问代理服务器。在上图中,我们增加了两个代理,一个是http访问时使用的代理,而在这个代理中我们可以增加用户名跟密码的设置,另一个是https的代理服务器,那这样我们在访问百度时,我们所使用的ip地址就是代理服务器的ip地址。使用这个字段可以有效的隐藏用户爬取网页的源ip地址信息,能有效防止对爬虫的逆追踪。

        allow_redirects像是一个开关,表示允不允许对url重定向。stream也是一个开关,指对获取的内容是否进行立即下载,默认是立即下载。cert字段是保持本地ssl证书的字段。

7.2 get

7.3 head

7.4 post

7.5 put

7.6 patch

7.7 delete

二、盗亦有道

        网络爬虫按尺寸可以分为三类:小规模(占了90%以上)使用requests库即可,中规模使用scrapy库,大规模你只能定制开发,第三方无法实现。

        对于服务器来说,它默认是按照人数来约束它的访问能力。但是有爬虫爬取相关的内容,甚至说1秒内可以爬取10万甚至几万的情况下,服务器是很难提供那么高的性能的,因此对于某些爬虫,是受限于爬虫编写者的水平和它的目的,那么这样将会为服务器带来巨大的资源开销,从而对于网站运行着来说,爬虫形成了骚扰。
        爬虫引发的问题:骚扰问题,法律风险,隐私泄露

        反爬之来源审查:简单来说,作为网站的维护者,可以只响应浏览器或者已知的友好爬虫的访问。这个方法需要对维护网站的技术人员的能力有一定要求。

三、Robots协议

        Robots协议:网络爬虫排除标准。

作用:

        网站告知网络爬虫哪些页面可以抓取,哪些不行。

形式/使用:

        在网站根目录下放置一个robots.txt文件,这个文件写明了在一个网站里的哪些目录是允许爬虫去爬取的,哪些目录是不许爬取的。

 语法:

        User-agent:  ,Disallowed:   ,(#注释,*表示所有,/表示根目录)

案例:

        京东的Robots协议 https://www.jd.com/robots.txt

      

        User-agent:*,指的是如果你对于任何的网络爬虫来源,都应该遵守如下的协议。

        Disallow:/?* 表示任何爬虫都不允许访问,/?* 也就是以问好开头的路径

         Disallow:/pop/*.html和 Disallow:/pinpai/*.html表示满足这些个通配符的内容都是不允许访问的。

        此外,京东的Robots协议又提供了User-agent:EtaoSpider等,他们后面还跟着 Disallow:/,表示的是这四个网络爬虫是不允许爬取京东的任何资源。(可以理解为这四个是恶意爬虫,被京东发现后,因此拒绝它们对京东的任何数据访问。

其他练习链接:

        qq.com/robots.txt    QQ

        baidu.com/robots.txt   百度

        news.sina.com.cn/robots.txt   新浪微博

        news.qq.com/robots.txt   QQ邮箱

        需注意,Robots协议一定是放在网站的根目录下。但是对于新浪来说,www.sina.com.cn和news.sina.com.cn是两个不同的根目录,所以我们看两个网站的Robots协议是不一样的。另外,不是所有网站都具有Robots协议比如我们国家的教育网站.Robots协议规定,如果一个网站不提供robots.txt文件,那么这个网站是允许所有爬虫的。

Robots协议遵守方式:

     类人行为可不参照Robots协议: 任何网站提供资源,它都是方便2人类获取相关的信息,如果你的网络爬虫能够和人类获取相关的信息相一致(也就是说每次访问的量很少,访问的量不大,如一天或者一小时才访问一次)

四、实战

  案例1:京东商品页面的爬取

        我们要做的是,提供写程序获得该商品的信息

        1.首先打开京东页面选取一个商品:https://item.jd.com/10086386840914.html

        2.打开idle,get刚刚的链接,查看返回的状态码,200表示链接成功,并且获得了这个链接响应的内容

        3.查看encoding,这说明我们已经能从HTTP的头部分解析出这个页面的编码信息,这说明了京东页面显示了相关的编码 

        

        4.查看 内容是否正确。

        5.以下为京东商品页面的全代码。

 案例2:亚马逊商品页面的爬取

        https://www.amazon.cn/gp/product/B01M8L5Z3Y

        发现返回的是503 ,查看编码

        将编码改成可以阅读的相关编码后查看文本

        目前,全部代码如下

        事实上,当我们能从服务器上获得相关信息回来,那么这个错误已经不是网络出现的错误了。网站一般接受的是浏览器的请求,而对爬虫的请求是拒绝的。

        通过r.request.headers查看我们请求的request长什么样。

      

        通过上图,可以看见头部中的user-agent 显示的是python-requests/2.31.0,这说明我们的爬虫忠实的告诉了亚马逊的服务器,这次访问是由一个python的requests库的程序产生的,如果亚马逊提供了来源审查(反爬虫手段),它就可以使这样的访问变得错误,或者说它不支持这样的访问。

        接下来尝试一下,模拟浏览器向亚马逊发送请求。

        首先构造一个键值对,这样的一个键值对信息说明的是,我们重新定义了user-agent的内容。Mozilla/5.0(很标准的浏览器身份标识的字段)说明这个时候的user-agent可能是一个浏览器,这个浏览器可能是火狐,可能是Mozilla,甚至可能是IE10的浏览器。

        然后我们找到刚才的url链接,修改headers后再次访问status_code,发现返回的不是503,是200,这是说明我们真真正正的获得了一个产品的页面。

        再次查看user-agent的内容,发现user-agent的内容已经修改。

         此时再去访问r.text就是真正的页面内容了

        下面给出访问亚马逊产品的全部代码。在这个代码中与访问京东商品代码不同,我们需要通过headers字段让我们的代码模拟浏览器向亚马逊服务器提供HTTP请求。

案例3:百度360搜索关键词提交

        目的:用程序自动的向百度和360这俩个搜索引擎提交关键词并且获得它的搜索结果。

百度和360的区别主要在键不一样,百度是wd,360是q

 

案例4:网络图片的爬取和存储

        (该方式不止针对图片,对二进制的资源格式比如 图片、视频、动画等,都可以用同样的代码获取它。)

练习链接如下:

       http://img0.dili360.com/ga/M02/33/7C/wKgBzFSbqQyAJVAuAARB8cSWH_w695.tub.jpg@!rw14

        设定保存下来的图片名字为abc.jpg,方便我们后期处理

 with open(path,'wb') as f:
            f.write(r.content)

        这串代码表示先打开我们要存储的abc.jpg文件,并且把它定义为一个文件标识符f,然后我们将返回的内容(response返回的格式是二进制)写到这个文件中,即利用f.write(r.content)将返回的二进制形式写到文件中。

        

        f.close()表示关闭这个文件

        接着我们去D盘看一下这个abc.jpg文件

图片爬取全代码:

!案例5:IP地址归属地的自动查询(之前可以成功,现会报错)

        现成的查ip网站 :

        

 

        我们有的时候在网站看到的人机交互方式,比如说图形与文本框的、需要点击按钮的这种方式,在正式地向后台服务器提交的时候,其实都是以链接的形式提交的,只要我们能够通过浏览器的解析,知道向后台去提交的链接形式,那 就可以用python代码模拟。

 

相关文章:

【python】网络爬虫与信息提取--requests库

导学 当一个软件想获得数据,那么我们只有把网站当成api就可以 requests库:自动爬取HTML页面,自动网络请求提交 robots协议:网络爬虫排除标准(网络爬虫的规则) beautiful soup库:解析HTML页面 工具&…...

洛谷 P8627 [蓝桥杯 2015 省 A] 饮料换购

参考代码and代码解读 #include <bits/stdc.h> using namespace std; int main() { int n; scanf("%d", &n); int dr;//drdrink; dr n;//把drink赋值于n; while (n > 2) {//剩余的总瓶盖数要大于二,才能换得下一瓶饮料; dr n…...

Academic Inquiry|投稿状态分享(ACS,Wiley,RSC,Elsevier,MDPI,Springer Nature出版社)

作为科研人员&#xff0c;我们经常会面临着向学术期刊投稿的问题。一般来说&#xff0c;期刊的投稿状态会在官方网站上进行公示&#xff0c;我们可以通过期刊的官方网站或者投稿系统查询到我们投稿的论文的状态&#xff0c;对于不同的期刊在投稿系统中会有不同的显示。 说明&am…...

1+X运维试题样卷C卷(初级)

云计算C卷 单选题(200分) 1.在OSI模型中,HTTP协议工作在第()层,交换机工作在第()层。(10分) (答案未做:0分) A、7/3 B、7/2 (正确答案) C、6/3 D、6/2 2.Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令。(10分…...

Spring学习笔记(二)Spring的控制反转(设计原则)与依赖注入(设计模式)

一、控制反转&#xff1a;缩写IoC 是一种设计原则&#xff0c;降低程序代码之间的耦合度 对象由Ioc容器统一管理&#xff0c;当程序需要使用对象时直接从IoC容器中获取。这样对象的控制权就从应用程序转移到了IoC容器 二、依赖注入&#xff1a;缩写DI 依赖注入是一种消除类之…...

MySQL 基础知识(四)之表操作

目录 1 约束 2 查看已有表 3 创建表 4 查看表结构 5 修改表 6 删除表 1 约束 主键约束 primary key&#xff1a;唯一&#xff0c;标识表中的一行数据&#xff0c;此列的值不可重复&#xff0c;且不能为 NULL&#xff0c;此外&#xff0c;可以多个列组成主键唯一约束 uniq…...

计算机网络——10FTP

FTP FTP&#xff1a;文件传输协议 向远程主机上传输文件或从远程主机接收文件客户/服务器模式 客户端&#xff1a;发起传输的一方服务器&#xff1a;远程主机 ftp:RFC 959ftp服务器&#xff1a;端口号为21 FTP&#xff1a;控制连接与数据连接分开 控制连接 FTP客户端与FTP服…...

javascript中的this指向

文章目录 探索 JavaScript 中的神奇之谜&#xff1a;this关键字解析this 是什么&#xff1f;为何 this如此重要&#xff1f;this 的工作原理实例解析默认绑定隐式绑定显式绑定new 绑定 探索 JavaScript 中的神奇之谜&#xff1a;this关键字解析 JavaScript&#xff0c;作为一门…...

WebServer 之 http连接处理(下)

目录 ✊请求报文--解析 流程图 && 状态机 状态机 -- 状态转移图 主状态机 从状态机 http 报文解析 HTTP_CODE 含义 从状态机 逻辑 主状态机 逻辑 &#x1f41e;请求报文--响应 基础API stat mmap iovec writev 流程图 HTTP_CODE 含义(2) 代码分析 …...

Android电量相关知识

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、 查看耗电情况3.1 注册广播 ACTION…...

【Java多线程】线程中几个常见的属性以及状态

目录 Thread的几个常见属性 1、Id 2、Name名称 3、State状态 4、Priority优先级 5、Daemon后台线程 6、Alive存活 Thread的几个常见属性 1、Id ID 是线程的唯一标识&#xff0c;由系统自动分配&#xff0c;不同线程不会重复。 2、Name名称 用户定义的名称。该名称在各种…...

鸿蒙OS跨进程IPC与RPC通信

一、IPC与RPC通信概述 基本概念 IPC&#xff08;Inter-Process Communication&#xff09;与RPC&#xff08;Remote Procedure Call&#xff09;用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱动&#xff0c;用于设备内的跨进程通信&#xff0c;后者使用软总线驱动…...

Effective Objective-C 学习(三)

理解引用计数 Objective-C 使用引用计数来管理内存&#xff1a;每个对象都有个可以递增或递减的计数器。如果想使某个对象继续存活&#xff0c;那就递增其引用计数&#xff1a;用完了之后&#xff0c;就递减其计数。计数变为 0时&#xff0c;就可以把它销毁。 在ARC中&#xf…...

蓝桥杯备赛攻略

背景 第十五届蓝桥杯大赛快要到比赛的时间了&#xff0c;按照惯例省赛就在4月9号开赛。有很多的小伙伴都报名了这次比赛&#xff0c;也有很多的同学问我应该怎么训练&#xff0c;什么水平可以拿奖。我自己也已经参加过两届蓝桥杯大赛了&#xff0c;拿到过国赛三等奖&#xff0…...

react反向代理

http-proxy-middleware 使用npm安装 npm i -D http-proxy-middleware 文档 点击查看 关键代码 const { createProxyMiddleware } require(http-proxy-middleware);module.exports function(app) {app.use(/api, // api开头的地址的请求createProxyMiddleware({target: ht…...

债券专题二:可转债估值-二叉树模型

1. 模型背景 由于可转债自身的属性较多&#xff0c;因此对其定价的难度也会加大&#xff0c;在诸多影响因素中&#xff0c;未来的股价占比最高。由于股价的不可预测性&#xff0c;导致了可转债的定价在实际交易中作用非常有限。随着可转债发行数量和规模的增大&#xff0c;越…...

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展&#xff0c;开源软件已经成为软件开发的趋势&#xff0c;并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点&#xff0c;使得越来越多的企业和个人选择使用开源软件&#xff0c;促进了软件行业的繁荣。然而&#xff0c;在使用开源软件的过…...

【教程】Linux使用aria2c多线程满速下载

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 安装aria2c&#xff1a; sudo apt-get install aria2多线程下载&#xff1a; aria2c -x 16 -s 16 <url> 比如&#xff1a; aria2c -x 16 -s 16 http://images.cocodataset.org/zips/test2017.zip...

【漏洞复现】蓝网科技临床浏览系统信息泄露漏洞

Nx01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统&#xff0c;主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 Nx02 漏洞描述 蓝网科技临床浏览系统存在信息泄露漏洞&#xff0c;攻击者可以利用该漏洞获取敏感信息。 Nx03…...

JSON转换List<Map<String, Object>>、Map<String, Object>

废话就不说了 早上10点研究到现在 获取redis的JSON字符串 String getPalletListNew redisService.getRedis(“getPalletListNew”, abroad “” goodsLevel “” startPort “” destinationPort “” maxTon “” minTon); 转换Map<String,Object> public …...

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式&#xff0c;一种是单主模式&#xff0c;一种是多主模式。这个模式是在整个组中设置的&#xff0c;由 group_replication_single_primary_mode 这个系统变量指定&#xff0c;而且在所有成员上必须保持一致。ON 表示单主模式&#…...

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso &#xff08;注意&#xff1a;安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误&#xff09; environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…...

ubuntu22.04下使用conda安装pytorch(cpu及gpu版本)

本文介绍了conda下安装cpu、gpu版本的pytorch&#xff1b;并介绍了如何设置镜像源 ubuntu环境安装pytorch的CPU版本与GPU版本 系统&#xff1a;ubuntu22.04 显卡&#xff1a;RTX 3050 依赖工具&#xff1a;miniconda 确认环境 lsb_release -a No LSB modules are available.…...

突破编程_C++_高级教程(模板编程的基础知识)

1 模板编程的基本概念 C 的模板编程是一种编程技术&#xff0c;它允许程序员编写处理不同类型数据的通用代码。通过使用模板&#xff0c;可以创建与特定数据类型无关的函数或类&#xff0c;这些函数或类在编译时可以根据需要生成特定数据类型的版本。这增加了代码的复用性、灵…...

胆小勿入!AI创作恐怖电影宣传片《生化危机:重生》

胆小勿入&#xff01;AI创作恐怖电影宣传片《生化危机&#xff1a;重生》 "The city is falling, and the dead walk among us." "In the shadow of the apocalypse, the fight for survival begins." "The streets are silent, but the nightmare …...

HTTP 超文本传送协议

1 超文本传送协议 HTTP HTTP 是面向事务的 (transaction-oriented) 应用层协议。 使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。 是万维网上能够可靠地交换文件&#xff08;包括文本、声音、图像等各种多媒体文件&#xff09;的重要基础。 H…...

MySQL导入/导出数据

MySQL导入/导出数据 文章目录 MySQL导入/导出数据一、MySQL 导入数据1、mysql 命令导入2、source 命令导入3、使用 LOAD DATA 导入数据4、使用 mysqlimport 导入数据4.1、mysqlimport的常用选项介绍 二、MySQL 导出数据1、使用 SELECT ... INTO OUTFILE 语句导出数据2、mysqldu…...

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探&#xff1a;认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;一、数据可视化简介&#x1f333;&#x1f333;二、Matplotlib库简介&#x…...

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历&#xff1a;遍历时存节点信息&#xff0c;遍历完自定义排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历…...

TCP 和 UDP的区别

文章目录 概述区别UDPTCPTCP与UDP的选择UDP和TCP编程区别 概述 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是互联网中两种最常用的传输层协议 总的来…...

Python 将一维数组或矩阵变为三维

Python 将一维数组或矩阵变为三维 正文 正文 话不多说直接上代码&#xff1a; import numpy as npsampling_points 10001arr np.linspace(0, 2, sampling_points) arr_3D arr.reshape(1, 1, -1) print(arr_3D) """ result: [[[0.0000e00 2.0000e-04 4.0000…...

Python如何实现定时发送qq消息

因为生活中老是忘记各种事情&#xff0c;刚好又在学python&#xff0c;便突发奇想通过python实现提醒任务的功能&#xff08;尽管TIM有定时功能&#xff09;&#xff0c;也可定时给好友、群、讨论组发送qq消息。其工作流程是&#xff1a;访问数据库提取最近计划——>根据数据…...

支付方式接入:支付宝、微信支付、微软支付

支付方式接入&#xff1a;支付宝、微信支付、微软支付 1、微信支付-接入指引 2、支付宝-接入指引 3、微软支付-接入指引 3.1、使用visual studio打包应用&#xff08;发布到微软市场&#xff09;&#xff1a;Package a desktop app from source code using Visual Studio -…...

C++中的互斥量

互斥量是一个类&#xff0c;互斥量的使用必须引入头文件#include <mutex>。互斥量就如同一把锁&#xff0c;在同一时间&#xff0c;多个线程都可以调用lock成员函数尝试给这把锁头加锁&#xff0c;但是只有一个线程可以成功给这把锁加锁&#xff0c;其他没有加锁成功的线…...

盲盒小程序开发

现如今&#xff0c;盲盒已经成为了市场上不可忽视的新型消费模式&#xff0c;并且也逐渐遍布在全球各地中。盲盒的种类商品也逐渐丰富完善&#xff0c;不在局限于性价比高的盲盒玩具、手办等&#xff0c;也发展到了美妆、电子、食品等行业&#xff0c;具有较大的实用性和收藏价…...

安装 Windows 10

1.镜像安装 镜像安装:安装Windows 10 2.安装过程(直接以图的形式呈现) 选择专业版的 等待安装即可...

C++文件操作->文本文件(->写文件、读文件)、二进制文件(->写文件、读文件)

#include<iostream> using namespace std; #include <fstream>//头文件包含 //文本文件 写文件 void test01() { //1.包含头文件 fstream //2.创建流对象 ofstream ofs; //3.指定打开方式 ofs.open("test.txt", ios::out); //4.写…...

Mac相关问题

Mac 更新node版本 第一步&#xff0c;先查看本机node.js版本&#xff1a; node -v 第二步&#xff0c;清除node.js的cache&#xff1a; sudo npm cache clean -f 第三步&#xff0c;安装 n 工具&#xff0c;这个工具是专门用来管理node.js版本的&#xff0c;别怀疑这个工具…...

Python爬虫之Splash详解

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash 的使用 Splash 是一个 JavaScript 渲染服务&#xff0c;是一个带有 HTTP API 的轻量级浏览器&#xff0c;同时它对接了 Python 中的 Twisted 和 QT 库。利用它&#xff0c;我们同样可以实现动态渲染页面的抓取。 1. 功…...

Deep深度系统下载安装Beyond compare4

Beyond Compare 4下载和安装 1、在线安装 Debian, Ubuntu安装命令&#xff1a; wget https://www.scootersoftware.com/bcompare-4.4.6.27483_amd64.deb sudo apt update sudo apt install ./bcompare-4.4.6.27483_amd64.deb Redhat Enterprise Linux, Fedora, CentOS安装命令…...

Qt 使用QScintilla 编辑lua 脚本

需求&#xff1a; 利用QScintilla 编辑lua 脚本 步骤&#xff1a; 1&#xff0c;下载 QScintilla Riverbank Computing | Download 2, 打开 src/qscintilla.pro 文件 编译出 dll库 3&#xff0c;工程中引入这个库 注意debug 模式 必须加载debug 版本编译的库&#xff0…...

2022长安杯复现

案件情况 某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗&#xff0c;该网站号称使用“USTD 币”购买所谓的“HT 币”&#xff0c;受害人充 值后不但“HT 币”无法提现、交易&#xff0c;而且手机还被恶意软件锁定 勒索。警方根据受害人提供的虚拟币交易网站调取了对应…...

Netty Review - NioEventLoopGroup源码解析

文章目录 概述类继承关系源码分析小结 概述 EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEventLoopGroup();这段代码是在使用Netty框架时常见的用法&#xff0c;用于创建两个不同的EventLoopGroup实例&#xff0c;一个用于处理连…...

团队配置管理规范浅见

在一段时间的工作过程中配置管理工作确实对我们的生产活动产生了巨大的工作量&#xff0c;现在就这个工作来进行梳理一下。 本文主要分为两部分&#xff1a; 1、借用软件系统分析师的配置管理部分内容来介绍配置管理的工作&#xff08;原谅时间精力有限&#xff0c;原文基本已…...

「算法」二分查找1:理论细节

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;算法详解 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 二分查找算法简介 这个算法的特点就是&#xff1a;细节多&#xff0c;出错率高&#xff0c;很容易就写成死循环有模板&#xff0c;但…...

【网络安全】什么样的人适合学?该怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a; 什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 当然&#xff0c;产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级…...

从零开始学习数据结构—【链表】—【探索环形链的设计之美】

环形链表 文章目录 环形链表1.结构图2.具体实现2.1.环形链表结构2.2.头部添加数据2.2.1.具体实现2.2.2.测试添加数据 2.3.尾部添加数据2.3.1.具体实现2.3.2.添加测试数据 2.4.删除头部数据2.4.1.具体实现2.4.2.测试删除数据 2.5.删除尾部数据2.5.1.具体实现2.5.2.测试删除数据 …...

AJAX——HTTP协议

1 HTTP协议-请求报文 HTTP协议&#xff1a;规定了浏览器发送及服务器返回内容的格式 请求报文&#xff1a;浏览器按照HTTP协议要求的格式&#xff0c;发送给服务器的内容 1.1 请求报文的格式 请求报文的组成部分有&#xff1a; 请求行&#xff1a;请求方法&#xff0c;URL…...

java面试微服务篇

目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…...

JS进阶——垃圾回收机制以及算法

版权声明 本文章来源于B站上的某马课程&#xff0c;由本人整理&#xff0c;仅供学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;本人致力于维护原创作品的权益&#xff0c;共同营造一个尊重知识…...