自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(408)
  • 问答 (6)
  • 收藏
  • 关注

原创 STL常用算法——算术生成算法和集合算法

fill_n()函数: 则以给定的迭代器为起始位置,将容器中指定数量(小于容器大小)的元素设置为给定的值。set_intersection()函数:求两个容器元素的交集。set_difference()函数:求两个容器元素的差集。set_union返回值是并集中最后一个元素的位置。set_union()函数:求两个容器元素的并集。fill()函数:向整个容器中填充指定的元素。目标容器开辟的空间需要从两个源容器中取小值。求交集的两个容器必须是有序的。求并集的两个容器必须是有序的。两个容器必须是有序的。

2022-11-01 10:29:10 124

原创 STL常用算法——拷贝和替换算法

replace_if()函数:将容器区间内所有满足条件的元素替换成指定元素。replace()函数:用新的值来替换容器内和给定值相匹配的元素。copy()函数:将源容器内指定范围的元素拷贝到目的容器中。copy_n():从源容器中复制指定个数的元素到目的容器中。swap()函数:交换两个容器中的元素。交换的容器必须是同种类型。

2022-10-31 17:00:15 119

原创 STL常用算法——排序算法

合并排序,merge() 函数用于将 2 个有序序列合并为 1 个有序容器,前提是这 2 个有序容器的排序规则相同(要么都是升序,要么都是降序)。并且最终借助该函数获得的新有序容器,其排序规则也和这 2 个有序容器要相同。sort() 函数在对自定义的类对象实现排序时,需要在该类的内部提供移动构造函数和移动赋值运算符。sort():对容器或普通数组中范围内的元素进行排序,默认进行升序排序,也可以自定义排序规则。reverse()函数:将容器指定范围内的元素进行反转。函数原型:该函数有以下两种格式。

2022-10-31 15:20:01 178

原创 STL常用算法——查找算法

find() 函数会返回一个输入迭代器,当 find() 函数查找到目标元素时,其指向查找到的第一个目标元素位置迭代器;adjacent_find()函数会返回一个迭代器,当查找成功时,该迭代器指向的是连续相等元素的第 1 个元素;和find() 函数不同的是,find() 函数需要明确指定要查找的元素的值,而find_if() 允许自定义条件来查找元素。find_if_not() 函数和 find_if() 函数的功能恰好相反,用于查找第一个不符合查找规则的目标元素。函数原型:该函数有以下两种语法格式。

2022-10-31 11:15:10 84

原创 STL常用算法——遍历算法

ransform() 可以将函数应用到容器的元素上,并将这个函数返回的值保存到另一个容器中,它返回的迭代器指向输出容器所保存的最后一个元素的下一个位置。for_each:遍历容器,对容器中的每一个元素调用函数或函数对象。

2022-10-28 16:57:45 121

原创 STL常用容器——map容器的使用

map容器是存储pair 类型键值对( pair 类模板创建的 pair 对象)的关联式容器。pair 键值对(pair):键值对中第一个元素为key(键),起查找作用,第二个元素为value(值)。使用 map 容器存储的各个键值对,键的值既不能重复也不能被修改。在使用 map 容器存储多个键值对时,默认情况下会自动根据各键值对的键的大小,对所有键值对做升序排序。

2022-10-25 16:29:18 221

原创 STL常用容器——set容器的使用

set容器底层结构是用二叉树实现的。set容器会自动根据键的大小对存储的键值对进行排序,根据 key 排序,也就等价为根据 value 排序。set 容器中每个键都是唯一的,可以插入或删除但不能修改,因为修改很有可能破坏 set 容器中元素的有序性。最正确的修改 set 容器中元素值的做法是:先删除该元素,然后再添加一个修改后的元素。

2022-10-24 17:24:34 828 1

原创 STL常用容器—— list 容器的使用

list容器简介list 容器:又称双向链表容器,该容器的底层是以双向链表的形式实现的,因此可以高效地进行元素的插入和删除操作。双向链表可以将链表里的元素存储在不同且不相关的内存位置,所以list 容器中的元素可以是分散存储在内存空间里的,而不是必须存储在一整块连续的内存空间中。在双向链表的任何位置插入或删除元素时间复杂度为都为O(1);list 容器移动元素的效率也比其它容器高。list容器底层实现。

2022-10-21 15:58:31 387

原创 STL常用容器——queue容器的使用

queue容器简介queue是一种先进先出(FIFO)的数据结构,因此queue容器又称队列容器。queue容器有 2 个开口,其中一个开口专门用来输入元素,另一个专门用来输出元素。队列中只有队头和队尾才可以被外界使用,只能在队列容器的末尾添加新元素,只能从头部移除元素。队列中进数据称为 — 入队 push。队列中出数据称为 — 出队 pop。queue容器特点queue容器内的元素进出都必须符合 “先进先出” 的策略。

2022-10-20 16:26:27 359 4

原创 STL常用容器——stack容器的使用

stack容器简介stack容器是堆栈容器,该容器具有先进后出的特性;使用stack容器需要引入头文件;stack容器只允许在容器的栈顶进行插入或删除操作;stack容器不允许有遍历行为,也不提供迭代器;有元素入栈的操作称为:push;将元素出栈的操作称为:pop栈的相关概念栈顶(Top):栈允许进行插入和删除操作的一端;栈底(Bottom):栈固定并且不允许进行插入和删除操作的一端;空栈:不含有任何元素的空栈。

2022-10-19 17:49:54 303 1

原创 STL常用容器——deque容器的使用

deque容器介绍deque(double-ended queue):双端队列容器。deque 容器适用于在序列头部和尾部添加或删除元素(时间复杂度为O(1)),而不适用于在序列中间添加或删除元素,当需要向序列两端频繁的添加或删除元素时,使用 deque 容器效率高。deque 容器也可以根据需要修改自身的容量和大小。deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。deque容器和vector容器的区别。

2022-10-19 16:26:12 229

原创 STL常用容器——vector容器的使用

重新指定容器的长度为num,若容器长度变长,则以elem值填充新位置;如果容器长度变短,则超出容器长度的末尾元素要被删除。vector 实现的是一个动态数组,可以动态扩展,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间。将v[begin(),end())区间中的元素拷贝给本身。

2022-10-07 16:12:58 410 1

原创 STL常用容器——String容器的使用

替换从pos开始的n个字符为字符串s。

2022-09-30 10:40:35 229

原创 STL技术——STL概述和入门

STL介绍STL( standard template library),译为标准模板库或者泛型库,是 C++ 提供的一个基础模板的集合。STL 已完全被内置到支持 C++ 的编译器中,不用另外安装。STL广义上可以分为:容器container(本质上就是封装有数据结构的模板类)、算法algorithm、迭代器iterator;容器和算法之间通过迭代器无缝连接。

2022-09-29 11:24:42 633 2

原创 C++核心编程

c++程序执行时将内存大致分为4个区域c++内存模型图如下:​代码区特点共享的:对于频繁执行的程序,在内存中只要有一份代码即可只读的:防止系统意外修改它的指令全局区特点该区域的数据,在程序结束后由操作系统释放栈区特点由编译器自动编译释放,存放函数的参数值,局部变量等注意事项:栈区编译的数据执行完后由编译器自动释放,不要返回局部变量的地址堆区特点由程序员分配释放,若程序员不释放,程序结束时由操作系统回收在c++中主要通过new关键字在堆区开辟内存new 和delete关键字。

2022-09-23 14:44:15 1622

原创 解决CLion的 CMake executable not found:XXX

连接成功后点击ok后Clion就能连接上远程服务器,然后等Clion重新编译完就可以进行debug了。原因是 clion 没有连接上远程服务器上的cmake,先检查cmake的连接情况:发现连接失败。输入后点击Test Connection:连接成功。

2022-09-06 14:15:59 548

原创 C++基础入门

变量和常量,关键字,数据类型,流程控制,数组,函数,指针,结构体

2022-09-01 11:46:17 296 1

原创 Python爬虫——Scrapy框架使用实例及执行过程

Selector(选择器):Scrapy 提供的数据提取方法,Selector 基于 lxml ,支持 XPath 选择器、CSS 选择器以及正则表达式,功能全面,解析速度和准确度非常高。要访问的域名:https://gz.58.com/sou/?extract_first():提取selector列表中的第1个文本内容。scrapy项目名:scrapy_02_tc。...

2022-08-26 17:42:40 395

原创 Python爬虫——Scrapy 的基本使用

parse():解析的方法,解析返回的响应、提取数据或者进一步生成要处理的请求;创建成功,项目文件如下:Scrapy 框架将整个爬虫项目分成了不同的模块,其中每个模块负责处理不同的工作,而且模块之间紧密联系。allowed_domains:允许访问的域名,如果后续请求中的域名不是这个域名或不是这个域名的子级域名,则请求会被过滤掉。name:爬虫文件的名字,必须是唯一的,用于运行爬虫和区分不同的爬虫。start_urls,初始的url地址,爬虫在启动时访问的域名。第一个参数是 python爬虫文件的名称。

2022-08-25 14:41:42 1095 1

原创 Python爬虫——Scrapy 简介和安装

Scrapy 简介Scrapy 是一个基于 Twisted实现的专业的、高效的异步处理爬虫框架,Scrapy 框架用纯Python实现。Twisted:一个采用 Python 实现的基于事件驱动的网络引擎框架,用 Twisted 来处理网络通讯可以加快我们的下载速度,不用自己去实现异步框架。Scrapy 框架用途非常广泛,可以提取网站数据、网络监测以及自动化测试等,Scrapy 也可以根据自己需求所需要的数据进行定制。

2022-08-22 17:25:19 321

原创 Python爬虫——使用requests请求登录

使用代理 IP 时会隐藏了本地网络的真实 IP,让第三方 IP 代替自己去访问网站,避免真实IP被网站封杀,代理 IP 可以通过端口探测技术被识别出来。通过构建代理 IP 池,从 IP 池中随机选择一个 IP 去访问网站,而不使用固定的真实 IP,让爬虫程序更加稳定。注意:通过使用session让请求之间保持状态,而保证了下载的验证码和登录时的验证码是同一个验证码。快代理 https://free.kuaidaili.com/free/齐云代理 https://proxy.ip3366.net/free/

2022-08-22 15:23:36 43

原创 Python爬虫——Requests 的Get和Post请求

方法:requests.post(),通过POST请求访问一个页面,对应于 HTTP 的 POST方法。方法:requests.get(),通过GET请求访问一个页面,对应于 HTTP 的 GET 方法。执行结果:返回json数据。

2022-08-19 14:27:45 290

原创 Python爬虫——Requests 库基本使用

Requests 库简介Requests 库是在 urllib 模块的基础上开发而来,继承了urllib.request的所有特性。Requests 采用了 Apache2 Licensed(一种开源协议)的 HTTP 库,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和POST数据自动编码。与urllib.request 相比,Requests 在使用时更加简洁方便、快捷,所以 Requests 库在编写爬虫程序时使用较多。....

2022-08-19 09:53:21 305 1

原创 Python爬虫——PhantomJS的使用和handless

Chrome handless 模式:由于新版本的 selenium 已经弃用 PhantomJs,PhantomJs也停止了更新和维护,所以推荐使用谷歌的Chrome handless模式(无头模式),这是一款无界面的谷歌浏览器,可以让使用者在不打开UI界面的情况下使用Chrome浏览器,并且运行效果与真实的Chrome浏览器一样,但是性能更高。PhantomJS 的使用。handless 使用实例。PhantomJS 简介。PhantomJS 下载。......

2022-08-17 10:55:56 370

原创 Python爬虫——Selenium 浏览器交互与异常处理

在使用Selenium的时候,可能会遇到一些异常,例如超时(TimeoutException)、节点未找到(NoSuchElementException)等。为了让程序不停止运行我们可以使用 try except 语句来捕获各种异常,对异常进行处理。click() 方法是Selenium WebDriver提供的操作鼠标的方法,其作用是单击已经定位到的节点。Selenium 可以控制浏览器执行想要的动作,如前进、后退、点击、刷新、输入文本等。double_click(),其作用是双击已经定位到的节点。...

2022-08-15 17:49:42 172

原创 Python爬虫——Selenium 定位节点及获取节点信息

当我们想要操作一个节点时,必须先找到这个节点,通过 Selenium 提供的定位节点的方法可以获取到想要的节点,获取节点后可以选择是执行下一步动作(如填充表单、模拟点击等)还是提取数据。Selenium 4 之前使用 find_element_by_*() 方法定位节点,Selenium 4之后使用 find_element()方法。如果要查找所有符合条件的标签,需要用 find_elements,find_elements 的返回值是列表类型,可以用for循环遍历里面的节点。......

2022-08-12 10:46:13 1290 1

原创 Python爬虫——Selenium 简介和下载

Selenium 是一个用于测试 Web 应用程序的自动化测试工具,最初是为网站自动化测试而开发的。它支持多种平台:Windows、Linux、Mac,支持多种语言:Python、Perl、PHP、C# 等。Selenium 实现了很多自动化功能,比如检测软件与浏览器兼容性,软件自动化测试,生成不同语言的测试脚本,自动录制、以及自动化爬虫等。Selenium 直接运行在浏览器中,就像真正的用户在操作一样。...

2022-08-10 17:53:08 686

原创 Python爬虫——BautifulSoup 节点信息

用get_text()获取span标签的文本内容,因为span标签没有子孙节点,所以只返回span标签的文本内容;待解析的html文本文件如下:id为al的p标签有子孙节点,id为bl的span标签没有子孙节点。string获取span标签的文本内容,因为span标签没有子孙节点,所以可以返回文本内容;用string获取p标签的文本内容,因为p标签有子孙节点,所以返回None;get_text()获取p标签的文本内容,返回p标签及子孙节点中的文本内容;使用实例2:对span标签进行解析,打印里面的内容。..

2022-08-08 15:38:30 331

原创 Python爬虫——BautifulSoup 常用函数的使用

向BeautifulSoup 的select() 函数中传入CSS 选择器作为参数,就可以在 HTML 文档中检索到与之对应的内容,返回类型为列表类型。find_all() 函数(常用):搜索当前标签的所有子节点,并判断这些节点是否符合过滤条件,将所有符合条件的结果以列表形式返回。find_all() 函数的返回结果类型是列表类型,find() 函数返回的结果是找到的第一个节点。find() 函数:搜索当前标签的所有子节点,返回一个符合过滤条件的结果。text:标签的文本内容去匹配,而不是标签的属性。...

2022-08-05 16:09:54 234

原创 Python爬虫——BS4解析方式简介

BautifulSoup简介BeautifulSoup简称BS4(其中4表示版本号4.x,之前的版本已经停止开发),是一个可以快速从HTML或XML文件中提取数据的第三方Python库。BeautifulSoup能够将HTML或XML转化为可定位的树形结构,并且提供一些简单的、python式的函数用来处理导航、查找、修改功能,缺点解析器解析器使用方法优点缺点Python标准库BeautifulSoup(html文件,“html.parser”)...

2022-08-01 11:51:28 205

原创 Python爬虫——JsonPath解析方式

并且JSONPath提供多种语言实现版本,包括JavaScript、Python、PHP和Java。JSONPath表达式始终引用JSON结构,就像XPath表达式与XML/HTML文档结合使用一样。

2022-07-29 15:29:11 401

原创 Python爬虫——XPath的使用

可以用xpath插件来动态的获取xpath路径(将鼠标悬停在需要选取的文本数据上,然后按下shift按键就会自动出现定位该文本的Xpath表达式,然后再根据需求对表达式修改。先发送请求访问网站,得到网站源码,然后解析网站源码,从网站源码中使用xpath表达式定位到需要下载的图片地址,然后用urllib.request.urlretrieve()方法下载。4、调用xpath路径,提取数据,xpath的返回数据是列表类型。2、发送请求访问网站,得到服务器响应的页面源码。使用实例二从网站上下载图片。.......

2022-07-29 09:50:49 2250

原创 Python爬虫——XPath解析本地html文件

XPathXML路径语言(XMLPathLanguage),XPath作用是确定XML文档中某部分的位置,同时它也可以用于检索HTML文件。在使用爬虫过程中可以用XPath来爬取网页中想要的数据。Xpath使用简洁的路径表达式来匹配XML/HTML文档中的节点或者节点集,通过定位网页中的节点,从而找到我们需要的数据。Xpath提供了100多个内建函数,包括了处理字符串、数值、日期以及时间的函数。因此Xpath路径表达式几乎可以匹配所有的元素节点。......

2022-07-26 10:41:49 1714

原创 Python爬虫——代理和代理池

因此,我们一般都会建立一个代理,定期更换一个代理,即使这个IP被封了,也可以换另一个IP。使用User-Agent(用户代理)池,能够避免总是使用一个User-Agent来访问网站,因为短时间内总使用同一个User-Agent高频率访问的网站,可能会引起网站的警觉,从而屏蔽掉IP。代理池就是自己去收集网上的可用免费代理ip,自建自己的ip代理池。补充User-Agent(用户代理)池,类似IP代理池,就是把多个浏览器的User-Agent数据放入列表中,然后再从中随机选择一个来使用。.........

2022-07-15 10:10:17 1268 1

原创 Python爬虫——Cookie模拟登录

现在很多网站需要用户成功登录后才可以查看相关内容。使用Cookie 模拟登录可以很好地解决这种问题。Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie是一个记录了用户登录状态以及用户属性的加密字符串,Cookie可以保持登录信息到用户下次与服务器的会话。Cookie 以键 / 值对形式存储。Cookie 验证流程:当用户第一次登陆网站时,服务端会在返回的响应头 Response Headers 中添加 Cookie数据, 浏览器接收到响应头

2022-07-14 17:27:28 2005

原创 Python爬虫——ajax的Get和Post请求

有些网站内容是使用ajax加载的,ajax通常返回的是JSON格式的数据,直接对ajax的 url 进行POST或GET方式请求,得到的就是JSON格式的数据。当前端页面想和后端服务器进行数据交互时就可以使用ajax。执行结果:Pycharm 格式化json文件快捷键:ctrl+alt+L执行结果:json文件成功下载执行结果:json文件成功下载到本地...

2022-07-14 14:46:16 397

原创 Python爬虫——Get和Post请求的使用

GET请求一般用于我们向服务器获取数据( urllib默认使用get请求),比如搜索:毛不易,地址栏中的 URL 信息:其中wd 表示搜索字符串的键,而“毛不易”则代表输入的值在网页地址栏中删除wd后面多余的查询条件,最后显示的 URL 如下:但在上图Headers请求头里,发送的请求是:同样删除wd后面多余的查询条件,最后显示的 URL 如下:http://www.baidu.com/s? 后面出现的那个长长的字符串,就是搜索关键字“毛不易”的Unicode的编码格式。quote(str):对字符串

2022-07-14 10:13:51 670

原创 Python爬虫——urllib下载和订制请求对象

下载资源使用urllib.request模块的urlretrieve()方法,urllib.request.urlretrieve():将URL对应的网络资源下载到本地,包括网页,图片和视频。2、定制请求绝大多数网站都具备一定程度的反爬能力,禁止网络爬虫程序大量地访问网站资源,以免给网站服务器带来压力,User-Agent(用户代理) 就是反爬策略的其中一种,很多网站都会对请求头Headers的User-Agent进行检测。用不同的浏览器在发送请求的时候,会有不同的User-Agent头:查看本机的浏览

2022-07-13 11:46:19 328

原创 Python爬虫——urllib的基本使用

urllib 是Python3的内置模块,该模块能实现基本的网页爬取,基本上涵盖了基础的网络请求功能。urllib 库有四个模块:urllib.request,urllib.error,urllib.parse,urllib.robotparserurllib.request:发送http请求urllib.error:处理请求过程中,出现的异常。urllib.parse:解析urlurllib.robotparser:解析robots.txt 文件执行结果,由于篇幅过长,只简单显示一下:[外链图片转存失败

2022-07-12 17:52:40 161

原创 Python爬虫——网络爬虫简介

网络爬虫(Web Spider)又称“网络蜘蛛”或“网络机器人”,它是一种按照一定规则从互联网中获取网页内容的程序或者脚本。网络爬虫会模拟人使用浏览器,上网自动抓取互联网中数据。Python 爬虫指的是用 Python来编写爬虫程序。其他语言也可以编写爬虫,如 Java、PHP 、C/C++等,不过相比而言,Python 语法优美、代码简洁、开发效率高、支持多个爬虫模块,比如 urllib、requests、Bs4 等。Python 的请求模块和解析模块丰富成熟,并且还提供了强大的 Scrapy 框架,让编

2022-07-12 16:45:33 1022

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除