自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(266)
  • 收藏
  • 关注

原创 ArrayBlockingQueue基本使用及其生产者、消费者方法实现原理解析

在初始化的时候,必须指定当前队列的长度。因为是基于数组实现的队列结构,数组长度不可变,必须提前设置数组长度信息。

2024-06-25 19:34:16 373

原创 Python全局解释器锁GIL问题

⚠️GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行,就没有GIL的问题。Python代码的执行由Python 虚拟机(也叫解释器主循环,CPython版本)来控制,Python 在设计之初就考虑到要在解释器的主循环中,同时只有一个线程在执行,即在任意时刻,只有一个线程在解释器中运行。不好意思,同一时间执行的线程只有一个线程,它就是这个样子的。

2024-06-23 22:25:20 245

原创 Golang执行流程及语法注意事项

如果我们先编译生成了可执行女件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行如果我们是直接go run go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。go run运行时间明显要比第一种方式 长一点点。

2024-06-21 23:01:59 216

原创 异步编程CompletableFuture应用&源码分析

平时多线程开发一般就是使用Runnable,Callable,Thread,FutureTask,ThreadPoolExecutor这些内容和并发编程息息相关。相对来对来说成本都不高,多多使用是可以熟悉这些内容。这些内容组合在一起去解决一些并发编程的问题时,很多时候没有办法很方便的去完成异步编程的操作。Thread + Runnable:执行异步任务,但是没有返回结果Thread + Callable + FutureTask:完整一个可以有返回结果的异步任务上述的方式都是有一定的局限性的。

2024-06-06 09:03:36 1031

原创 异步编程FutureTask应用&源码分析

1.1 FutureTask介绍FutureTask是一个可以取消异步任务的类。FutureTask对Future做的一个基本实现。可以调用方法区开始和取消一个任务。一般是配合Callable去使用。异步任务启动之后,可以获取一个绑定当前异步任务的FutureTask。可以基于FutureTask的方法去取消任务,查看任务是否结果,以及获取任务的返回结果。FutureTask内部的整体结构中,实现了RunnableFuture的接口,这个接口又继承了Runnable, Future这个两个接口。

2024-06-05 23:24:38 391

原创 HTML5简介与基础骨架

HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾HTML是一种标记语言,标记语言是一套标记标签。

2024-03-06 22:53:24 407

原创 VSCode开发者工具快捷键

文件 -> 首选项 -> 设置 -> Emmet -> 勾选。为了更简单的生成,还可以配置vsCode。

2024-03-06 22:23:51 463

原创 Python 多个装饰器_执行顺序的深刻剖析

装饰器函数的执行顺序是分为(被装饰函数)定义阶段和(被装饰函数)执行阶段的,装饰器函数在被装饰函数定义好后立即执行。有时候,我们需要多个装饰器修饰一个函数。比如:需要增加日志功能、增加执行效率测试功能。【示例】增加日志和执行计时功能的装饰器。【示例】多个装饰器执行顺序。

2024-03-06 21:30:56 421

原创 Python 装饰器深入剖析_装饰器的写法

装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。v4.0版本解决,装饰器。

2024-03-06 21:16:02 408

原创 Python 函数式编程核心(高阶函数、闭包等)刨析

排序算法,排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较如果是自定义对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。【示例】sorted对list进行排序print("升序排列:",sorter1)

2024-03-05 23:02:22 967

原创 Python PIP安装第三方库

强大的标准库奠定了python发展的基石,丰富和不断扩展的第三方库是python壮大的保证。我们可以进入PyPI官网():可以看到发布的第三方库达到了十多万种,众多的开发者为Python贡献了自己的力量。表 常用第三方库大汇总分类库名称说明环境管理P非常简单的交互式 python 版本管理工具Pyenv简单的 Python 版本管理工具Vex可以在虚拟环境中执行命令创建独立 Python 环境的工具包管理pipPython 包和依赖关系管理工具pip-tools。

2024-03-04 23:30:03 1436

原创 Python 包的概念和创建包导入包

当一个项目中有很多个模块时,需要再进行组织。我们将功能类似的模块放到一起,形成了“包”。本质上,“包”就是一个必须有的文件夹。典型结构如下:包下面可以包含“模块(module)”,也可以再包含“子包(subpackage)”。就像文件夹下面可以有文件,也可以有子文件夹一样。上图中,aaa。可以看到每个包里面都有文件。

2024-03-04 23:18:47 364

原创 Python import加载底层原理_importlib实现动态导入

动态导入import语句本质上就是调用内置函数,我们可以通过它实现动态导入。给动态传递不同的的参数值,就能导入不同的模块【示例】使用动态导入指定的模块注意:一般不建议我们自行使用导入,其行为在python2和python3中有差异,会导致意外错误。如果需要动态导入可以使用importlib模块。

2024-03-04 23:15:22 559

原创 Python 模块导入_import和from_import详解和区别

模块化设计的好处之一就是“代码复用性高”。写好的模块可以被反复调用,重复使用。模块的导入就是“在本模块中使用其他模块”。

2024-03-04 23:09:25 479

原创 Python 模块化编程的流程_设计和实现分离的思想

API(Application Programming Interface 应用程序编程接口)是用于描述模块中提供的函数和类的功能描述和使用方式描述。模块化编程中,首先设计的就是模块的API(即要实现的功能描述),然后开始编码实现API中描述的功能。可以通过help(模块名)查看模块的API。我们可以在模块的第一行增加一个文档字符串,用于描述模块的相关功能。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。

2024-03-04 22:38:13 427

原创 Python 模块化编程理念_什么是模块_哲学思想

py“量变引起质变”是哲学中一个重要的理论。量变为什么会引起质变呢?本质上理解,随着数量的增加,管理方式会发生本质的变化;旧的管理方式完全不适合,必须采用新的管理方式。❤️大家可以清晰的看到这发展的流程,核心的哲学思想就是“量变引起质变”、“物以类聚”。同样的思路,在企业管理、人的管理中思路完全一致。大家可以举一反三。

2024-03-04 22:28:09 357

原创 Splash基本使用

上图中main()方法的第一个参数是splash,这个对象非常重要,它类似于Selenium中的WebDriver对象。

2024-03-04 00:03:33 419

原创 爬虫反反爬及常见反爬手段

下图来自猫眼电影电脑版。

2024-03-03 21:13:06 1752

原创 Scrapy实战保存数据到数据_保存数据到MySQL

目标网站:中国福利彩票网 双色球往期数据。

2024-03-03 16:50:09 382

原创 Scrapy下载中间件介绍及UserAgent_代理_selenium的使用

下载中间件是Scrapy请求/响应处理的钩子框架。这是一个轻、低层次的应用。通过可下载中间件,可以处理和的数据。

2024-03-03 16:19:21 1238

原创 Scrapy FormRequest对象的使用

FormRequest是Request的扩展类,具体常用的功能如下:请求时,携带参数,如表单数据从Response中获取表单的数据FormRequest类可以是:增加了新的构造函数的参数formdata。其余的参数与Request类相同.返回一个新FormRequest对象,其中的表单字段值已预先填充在给定响应中包含的HTML 元素中.

2024-03-03 15:41:35 973

原创 Scrapy Request对象的介绍

爬虫中请求与响应是最常见的操作,对象在爬虫程序中并传递到中,后者并。

2024-03-03 15:15:29 385

原创 Scrapy CrawlSpider的介绍

在Scrapy中Spider是所有爬虫的基类,而CrawSpiders就是Spider的派生类。适用于先爬取start_url列表中的网页,再从爬取的网页中获取link并继续爬取的工作。运行图如下。

2024-03-03 14:59:40 326

原创 Scrapy配置文件Settings的使用解读

Scrapy允许自定义设置所有Scrapy组件的行为,包括核心、扩展、管道和spider本身。

2024-03-03 14:41:40 925

原创 Scrapy ImagePipeline保存图片和自定义

问题文件名不友好存储图片URL的参数名称与类型太固定解决方案自定义ImagePipeline,扩展继承实现方法发送请求,下载图片转发文件名实现修改文件名与保存路径。

2024-03-03 14:03:22 521

原创 Scrapy ItemPipeline的使用

当在Spider中被之后,可以到中统一。

2024-03-03 13:35:00 493

原创 Scrapy数据的提取

Scrapy有自己的数据提取机制。它们被称为选择器。我们可以通过使用的选择器re、xpath、css提取数据不用再与Xpath,BS4。

2024-03-03 13:14:03 365

原创 Scrapy的启动方式介绍

Scrapy启动的方式有多种方式:Scrapy命令运行运行环境运行Python脚本运行环境运行程序之前,要确认网站是否允许爬取robots.txt文件。

2024-03-02 23:57:14 690

原创 Scrapy创建第一个爬虫案例

一般创建爬虫文件时,以网站域名命名。

2024-03-02 21:49:27 589

原创 Scrapy的介绍与安装

Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。尽管 Scrapy 最初是为网络抓取而设计的,但它也可用于使用 API提取数据或用作通用网络爬虫。

2024-03-02 21:37:13 815

原创 Selenium实战虎牙直播案例

【代码】Selenium实战虎牙直播案例。

2024-03-02 18:40:46 369

原创 selenium参数的使用

chrome59版本以后可以变成无头的浏览器,加以下参数。

2024-03-02 18:15:19 478

原创 selenium等待元素

指定一个等待条件,并且指定一个最长等待时间,会在这个时间内进行判断是否满足等待条件,如果成立就会立即返回,如果不成立,就会一直等待,直到等待你指定的最长等待时间,如果还是不满足,就会抛出异常,如果满足了就会正常返回。到了一定的时间发现元素还没有加载,则继续等待我们指定的时间,如果超过了我们指定的时间还没有加载就会抛出异常,如果没有需要等待的时候就已经加载完毕就会立即执行。作用:当代码运行到强制等待这一行的时候,无论出于什么原因,都强制等待指定的时间,需要通过time模块实现。使用 time.sleep。

2024-03-02 17:59:09 323

原创 selenium调用JS实现滚动条获取数据

有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作。

2024-03-02 17:47:46 385

原创 selenium拖拽元素

要完成元素的拖拽,首先需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现,ActionChains用于定制动作。通过ActionChains对象中的perform()执行动作。

2024-03-02 17:32:31 376

原创 selenium处理弹出窗

有时,页面可能要弹窗口。只需要去定位弹窗上的“确定”按钮即可switch_to焦点集中到页面上的一个警告(提示)accept()接受警告提示切换至弹窗。

2024-03-02 17:23:19 561

原创 selenium定位选择框

在爬取数据时,有时数据太多,而官网提供了筛选功能select标签,像这样的数据,我们只需要定位元素,点击即可。

2024-03-02 17:14:31 332

原创 selenium定位层级内元素

对于一个现代的web应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一个难题。有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium webdriver 提供了一个switch_to_frame方法,可以很轻松的来解决这个问题。

2024-03-02 17:05:14 337

原创 selenium定位下拉菜单

selenium_定位下拉菜单1 包含下拉菜单页面<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Level Locate</title> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/j

2024-03-02 16:47:20 407

原创 selenium定位元素

外链图片转存中…(img-mVwggb0g-1709368304735)]对象的定位应该是自动化的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。

2024-03-02 16:32:55 319

空空如也

空空如也

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

TA关注的人

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