从零开始学python(十三)爬虫工程师自动化和抓包

前言

回顾之前讲述了python语法编程 必修入门基础和网络编程,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析,爬虫数据采集前面没看的也不用往前翻,系列文已经整理好了:

1.跟我一起从零开始学python(一)编程语法必修
2.跟我一起从零开始学python(二)网络编程
3.跟我一起从零开始学python(三)多线程/多进程/协程
4.跟我一起从零开始学python(四)数据库编程:MySQL数据库
5.跟我一起从零开始学python(五)数据库编程:Redis数据库
6.跟我一起从零开始学python(六)数据库编程:MongoDB数据库
7.跟我一起从零开始学python(七)机器学习
8.跟我一起从零开始学python(八)全栈开发
9.跟我一起从零开始学python(九)数据分析
10.跟我一起从零开始学python(十)Hadoop从零开始入门
11.跟我一起从零开始学python(十一)简述spark
12.跟我一起从零开始学python(十二)如何成为一名优秀的爬虫工程师

本系列文根据以下学习路线展开讲述,由于内容较多,:

从零开始学python到高级进阶路线图


适用于零基础学习和进阶人群的python资源:

① 腾讯认证python完整项目实战教程笔记PDF
② 十几个大厂python面试专题PDF
③ python全套视频教程(零基础-高级进阶JS逆向)
④ 百个项目实战+源码+笔记
⑤ 编程语法-机器学习-全栈开发-数据分析-爬虫-APP逆向等全套项目+文档

自动化和抓包专题

一丶selenium采集

之前通过selenium实现过抢演唱会门票,感兴趣的可以看看
通过selenium自动化实现演唱会抢门票

Selenium是一种流行的自动化Web测试工具,它可以模拟人类用户在浏览器中的行为,适合用于构建自动化爬虫。本专题将介绍如何使用Selenium进行自动化爬取,并讲解如何通过抓包获取网页数据。

1.Selenium介绍

Selenium是一种开源的自动化测试工具,它可以模拟人类用户在浏览器中的行为,例如点击链接、填写表单、提交数据等等。Selenium支持多种编程语言的接口,包括Python、Java、JavaScript等等。对于爬虫工程师来说,使用Selenium可以方便地构建自动化爬虫,模拟人类用户在浏览器中的操作,从而获取数据。

2.Selenium的安装

Selenium可以通过pip安装,使用以下命令:

pip install selenium

同时,还需要下载浏览器对应的驱动程序,例如Chrome浏览器需要下载ChromeDriver。ChromeDriver的下载链接如下:

https://sites.google.com/a/chromium.org/chromedriver/downloads

下载完成后,需要将ChromeDriver放置到系统的PATH环境变量中,这样才能在代码里使用ChromeDriver启动Chrome浏览器。

3.Selenium的基本使用

1.使用Selenium进行自动化爬取,需要进行以下步骤

引入selenium库:使用Python编写代码时,需要先引入selenium库。

from selenium import webdriver

2.初始化浏览器

Selenium支持多种浏览器,包括Chrome、Firefox等等。需要通过Selenium提供的API初始化浏览器,并指定浏览器驱动程序的位置。

driver = webdriver.Chrome('D:/chromedriver.exe')

3.打开网页

使用Selenium的get方法打开一个网页。

driver.get('http://www.baidu.com')

4.操作页面元素

通过定位页面元素,使用Selenium模拟用户在浏览器中的操作。例如点击链接、填写表单、提交数据等等。

driver.find_element_by_id('kw').send_keys('Python')   # 输入关键字
driver.find_element_by_id('su').click()              # 点击搜索按钮

5.获取数据

使用Selenium的API获取页面的数据,例如获取页面的HTML源代码、截图等等。

html = driver.page_source    # 获取页面的HTML源代码
driver.save_screenshot('baidu.png')   # 截图并保存

6.关闭浏览器

当完成所有操作后,需要关闭浏览器。

driver.quit()

4.Selenium的高级用法

除了基本用法,Selenium还提供了多种高级用法,例如使用代理、使用无头浏览器等等。

1.使用代理

在进行自动化爬取时,有时会需要使用代理,这时可以通过Selenium设置代理。

from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--proxy-server=http://127.0.0.1:8080')    # 设置代理
driver = webdriver.Chrome('D:/chromedriver.exe', chrome_options=chrome_options)

2.使用无头浏览器

有些网站会检测是否是真实的浏览器访问,这时可以使用无头浏览器,模拟真实的浏览器行为。

chrome_options = Options()
chrome_options.add_argument('--headless')    # 使用无头浏览器
driver = webdriver.Chrome('D:/chromedriver.exe', chrome_options=chrome_options)

3.使用等待

当进行自动化爬取时,需要等待网页加载完成,才能进行后续操作。可以使用Selenium提供的等待模块,帮助我们等待网页加载完成。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdriver.get('http://www.baidu.com')
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'kw'))
)    # 等待id为kw的元素加载完成
element.send_keys('Python')
driver.quit()

5.抓包获取数据

除了使用Selenium进行自动化爬取,还可以使用抓包的方式获取网页数据。抓包可以帮助我们分析网页的请求和响应,获取到所需的数据。

常用的抓包工具有Fiddler、Charles等等。以Fiddler为例,介绍如何使用Fiddler进行抓包。

1.下载Fiddler

Fiddler可以在官网上进行下载,下载链接如下:
https://www.telerik.com/download/fiddler/fiddler4

下载完成后,安装Fiddler,启动Fiddler。

2.设置代理

在进行抓包时,需要将浏览器的代理设置为Fiddler的代理。在Fiddler的界面中,找到Tools -> Options -> Connections,勾选"Allow remote computers to connect",并记下Fiddler的IP地址和端口号。

在浏览器中打开代理设置界面,将代理服务器的IP地址和端口号设置为Fiddler的地址和端口号。例如在Chrome浏览器中,代理设置界面可以通过以下地址打开:

chrome://settings/system

勾选"Use a proxy server",并将"Address"和"Port"分别设置为Fiddler的地址和端口号。

3.抓包获取数据

打开浏览器,访问需要爬取的网页。在Fiddler的界面中,可以看到浏览器和网站之间的通信数据,其中包含了请求和响应数据。可以通过分析这些数据,找到所需的数据,并提取出来。
通过抓包的方式获取到的数据,通常是JSON格式或者XML格式。可以使用Python的内置库或者第三方库来处理这些数据,从而获取到所需的内容。

总结

在进行自动化爬取时,使用Selenium可以方便地模拟人类用户的操作,从而获取数据。同时,通过抓包的方式,可以分析网页的请求和响应,从而获取到所需的数据。需要注意的是,进行自动化爬取和抓包时,需要遵守相关的法律法规,不得进行违法违规的操作。

二丶pyppeteer采集

Pyppeteer是一个基于Chrome DevTools Protocol的Python库,可以与无头Chrome(Headless Chrome)进行交互,从而实现自动化的浏览器操作和网页抓取。本文将详细介绍如何使用Pyppeteer进行爬虫和自动化任务。

Pyppeteer的安装可以通过pip进行:

pip install pyppeteer

安装完成后,可以新建一个Python脚本,导入pyppeteer库并创建一个异步的浏览器对象:

import asyncio
from pyppeteer import launchasync def main():browser = await launch()page = await browser.newPage()# 程序的主要逻辑写在这里await browser.close()asyncio.get_event_loop().run_until_complete(main())

有了浏览器对象后,就可以开始执行各种浏览器操作了。下面是一些常见操作的示例:

1.打开指定的网址

await page.goto('https://www.example.com')

2.获取页面的HTML内容

html = await page.evaluate('document.documentElement.outerHTML')

3.在表单中填写内容并提交

await page.type('#username', 'my_username')
await page.type('#password', 'my_password')
await page.click('#submit')

4.等待页面加载完毕

await page.waitForNavigation()

5.截屏保存页面快照

await page.screenshot({'path': 'screenshot.png'})

在进行网页抓取时,有时候会需要模拟用户的交互,比如点击按钮、滚动页面、获取特定元素的文本内容等等。Pyppeteer也提供了丰富的API来实现这些功能。例如,要点击页面上的一个按钮:

await page.click('#my_button')

要获取特定元素的文本内容:

element = await page.querySelector('#my_element')
text_content = await element.evaluate('(element) => element.textContent')

Pyppeteer也支持处理文件上传、处理JavaScript弹窗、执行自定义JavaScript代码等高级功能。具体使用方法可以参考Pyppeteer的官方文档。

同时,由于Pyppeteer是基于Chrome DevTools Protocol开发的,所以可以通过抓包工具分析浏览器的网络请求,从而拿到网页的请求和响应信息。一个常用的抓包工具是Fiddler,可以用来监听浏览器和网站之间的通信,并查看请求和响应的详细内容。

Pyppeteer提供了与Fiddler等抓包工具配合使用的功能。可以通过调用pyppeteer.connection.Connection类的from_browser_wse方法,传入Fiddler的WebSocket代理地址,实现Pyppeteer与Fiddler的通信。

import pyppeteer.connectionpyppeteer.connection.Connection.from_browser_wse(f'ws://127.0.0.1:8866/devtools/browser/{browser.browserWSEndpoint.lstrip("ws://")}')

这样,通过Fiddler就可以查看Pyppeteer与浏览器之间的通信,并捕获请求和响应数据。

总结一下,Pyppeteer是一个方便的Python库,可以实现自动化的浏览器操作和网页抓取。它提供了丰富的API,可以模拟用户的交互行为,处理文件上传、JavaScript弹窗等高级功能,并通过抓包工具分析网络请求和响应数据,方便获取网页内容和进行其他进一步的处理。

pyppeteer请求实战案例

当使用Pyppeteer进行异步请求时,可以利用Python的异步编程特性(如asyncio和await)来实现高效的自动化任务和抓包功能。在本次实战中,我们将详细解释如何使用Pyppeteer进行异步请求,并提供一个示例项目供参考。

1.安装Pyppeteer
首先,确保你已安装Python和pip。然后在命令行中运行以下命令来安装Pyppeteer:

pip install pyppeteer

2.导入所需的模块和库
创建一个新的Python脚本,并导入所需的模块和库:

import asyncio
from pyppeteer import launch

3.定义异步函数
在脚本中创建一个异步函数,用于异步请求的操作:

async def fetch_data(url):browser = await launch()page = await browser.newPage()await page.goto(url)content = await page.content()await browser.close()return content

在这个示例中,我们定义了一个名为fetch_data的异步函数,它接收一个URL参数,并使用Pyppeteer来打开和渲染该URL页面。然后,我们使用await关键字等待页面的加载和渲染完成,并使用page.content()方法获取页面的内容。最后,我们关闭浏览器并返回页面的内容。

4.调用异步函数
创建一个主函数,并在其中调用异步函数:

async def main():url = 'https://example.com'content = await fetch_data(url)print(content)asyncio.get_event_loop().run_until_complete(main())

在这个示例中,我们定义了一个名为main的异步函数,在其中设置要请求的URL,并通过await关键字调用fetch_data函数来获取页面内容。最后,我们使用print语句将内容打印在控制台上。

5.运行脚本

在命令行中运行脚本,你将看到获取到的页面内容被打印在控制台上。

这是一个简单的使用Pyppeteer进行异步请求的项目实战详解。通过灵活运用Pyppeteer的异步特性,你可以实现更复杂和高效的自动化任务和抓包功能。你可以根据具体需求,进一步扩展和优化这个示例,以满足不同的项目需求。注意,Pyppeteer还提供了其他功能和API,如模拟用户交互、处理页面元素、执行JavaScript代码等等。在实际项目中,你可以根据需要使用这些功能来完成更多的任务

三丶Charles抓包

Charles是一款流行的网络抓包工具,广泛应用于PC端爬虫工程师的自动化和抓包任务中。它可以截获网络请求和响应数据,帮助开发者分析和调试网络通信。下面是Charles抓包的详细解释和使用方法:

1.下载和安装Charles

首先,你需要在官方网站上下载并安装Charles。官方网站地址为:https://www.charlesproxy.com/

2.配置网络代理

安装完成后,打开Charles并配置网络代理。在Charles的菜单栏中选择"Proxy",然后点击"Proxy Settings"。在弹出的窗口中,选择"HTTP Proxy"选项,将端口设置为8888(默认端口),并确保"Enable macOS proxy"或"Enable Windows proxy"选项被选中。保存设置并关闭窗口。

3.SSL代理配置(可选)

如果你需要抓取HTTPS请求的数据,你还需要在Charles中配置SSL代理。在Charles的菜单栏中选择"Help",然后点击"SSL Proxying",并选择"Install Charles Root Certificate"。根据操作系统的不同,你可能需要输入管理员密码来完成证书安装。完成后,Charles就可以解析和显示HTTPS请求的数据。

4.启动代理

在配置完成后,点击Charles的"Proxy"菜单并将"Proxy"选项打开,表示Charles的代理功能已启动。

5.手机端代理设置(可选)

如果你需要抓取手机端的请求数据,你还需要在手机设置中将代理设置为Charles的IP地址和端口。IP地址通常为运行Charles的计算机的IP地址,端口为8888(默认端口)。在手机上打开设置,进入Wi-Fi或移动网络选项,找到当前所连接的网络,点击进入高级设置,然后将代理设置为Charles的IP地址和端口。

6.开始抓包

在Charles中,你将看到请求和响应数据的列表。要开始抓包,你可以在Charles窗口的左上方的"Record"按钮上点击。点击后,Charles将开始记录网络请求和响应数据。

7.分析抓包结果

当网络请求和响应发生时,Charles会显示在其窗口中。你可以通过点击每个请求来查看其详细信息,包括请求头、响应头、请求体、响应体等。

8.过滤和定位请求
如果你的抓包结果非常庞大,你可以使用Charles的过滤功能来找到特定的请求。你可以按照URL、域名、请求方法等进行过滤,以便更方便地定位到你感兴趣的请求。

9.修改请求和响应

Charles还允许你修改请求和响应数据,以便进行调试和测试。你可以通过右键点击特定请求,并选择"Edit"来修改其请求和响应数据。

10.保存和导出抓包结果

Charles允许你保存整个会话的抓包结果,并可以导出为Har文件或其他格式进行进一步的分析和处理。

通过上述步骤,你可以开始使用Charles进行抓包并分析网络请求和响应数据。它为PC端爬虫工程师提供了丰富的工具和功能,帮助他们进行自动化任务和网络调试。请注意,合法合规的使用Charles以及尊重网站的使用条款和隐私政策非常重要。

Charles替换CSS和JS文件

在PC端爬虫工程中,Charles是一款非常强大的抓包工具,能够助力开发人员进行网络请求的抓取、修改以及响应的重放等操作。在抓包过程中,有时我们需要替换CSS和JS文件,以便在分析和测试中进行一些定制化的操作。下面是详细的步骤:

步骤一:安装和配置Charles

  • 下载并安装Charles。你可以从官方网站(https://www.charlesproxy.com/)下载适合你操作系统的版本,并按照安装向导进行安装。
  • 配置浏览器代理。启动Charles后,在浏览器中配置代理,将代理设置为Charles所在的IP地址和端口(默认端口为8888)。这样可以确保所有的浏览器请求都通过Charles进行中间人代理。

步骤二:设置替换规则

  • 打开Charles主界面后,点击“Tools”菜单,选择“Map Local…”。
  • 在“Map Local”对话框中,点击“Add”按钮添加一个新的映射规则。
  • 在映射规则中,填写要映射的远程URL和本地文件的路径。远程URL是指要替换的CSS或JS文件的网络路径,本地文件路径是指你准备替换的本地文件路径。点击“Browse”按钮来选择本地文件。

步骤三:应用更改并验证

  • 确保你已经完成了所有的替换规则并保存了它们。
  • 在浏览器中访问包含被替换文件的网页。Charles会中间人代理该请求并返回替换后的文件。
  • 在Charles的主界面中,可以点击“Sequence”选项卡查看正在进行的请求。找到相应的请求,可以通过右键单击和选择“Save Response…”来保存响应文件。
  • 检查网页以确认CSS或JS文件已被成功替换。你可以通过查看源代码、开发者工具或网页效果的变化来验证替换的结果。

需要注意的是,Charles只会在请求被重定向到代理的情况下才会生效,所以你可能需要在浏览器中配置代理以确保请求能够经过Charles。

使用Charles进行CSS和JS文件的替换可以帮助你在开发和测试过程中进行一些定制化的操作,比如替换特定的CSS样式或JS代码,从而实现一些特定的测试需求。

四丶mitmproxy

mitmproxy脚本编写-数据截取-代理响应

当涉及到PC端爬虫工程师的自动化和抓包专题时,mitmproxy是一个常用的工具,它可以作为中间人攻击(Man-in-the-Middle)的代理服务器,用于截取和修改客户端和服务器之间的通信数据。在此基础上,您可以使用mitmproxy的脚本编写功能来实现数据截取和代理响应的自动化处理。

下面是一些基本步骤来编写mitmproxy脚本以实现数据截取和代理响应的自动化:

1.安装mitmproxy:您可以从mitmproxy官方网站

(https://mitmproxy.org/)下载并安装mitmproxy,根据您的操作系统选择合适的版本。

2.创建脚本文件:使用文本编辑器创建一个Python脚本文件,例如mitmproxy_script.py

3.导入必要的模块:您的脚本需要导入mitmproxy、http和netlib等模块,可以使用类似以下的代码进行导入

from mitmproxy import ctx, http
from mitmproxy.net import encoding

4.编写脚本逻辑:在脚本文件中,您可以定义各种回调函数来处理请求和响应。下面是几个常用的回调函数:

  • request(flow: http.HTTPFlow):处理每个请求流(Flow),您可以在此函数中访问和修改请求的信息。
  • response(flow: http.HTTPFlow):处理每个响应流(Flow),您可以在此函数中访问和修改响应的信息。

5.实现数据截取和代理响应逻辑:在相应的回调函数中,您可以编写代码来实现数据截取和代理响应的逻辑。以下是一些示例代码片段:

def request(flow: http.HTTPFlow):# 检查请求是否符合条件if 'example.com' in flow.request.host:# 获取请求数据request_data = flow.request.content# 进行相应处理...def response(flow: http.HTTPFlow):# 检查响应是否符合条件if 'example.com' in flow.request.host:# 获取响应数据response_data = flow.response.content# 进行相应处理...

在上述代码片段中,您可以使用flow.request和flow.response对象来获取请求和响应的相关信息,例如URL、请求头、请求体、响应状态码、响应头和响应体等。

6.运行mitmproxy脚本:使用命令行工具进入到脚本文件所在的目录,并运行以下命令来启动mitmproxy并加载您的脚本:

mitmproxy -s mitmproxy_script.py

此命令将启动mitmproxy,并将您的脚本作为参数传递给它。mitmproxy将开始监听网络流量,并在请求和响应时调用相应的回调函数。

通过以上步骤,您可以编写mitmproxy脚本来实现数据截取和代理响应的自动化。您可以根据具体的需求和场景进一步定制和优化脚本逻辑。

适用于零基础学习和进阶人群的python资源:

① 腾讯认证python完整项目实战教程笔记PDF
② 十几个大厂python面试专题PDF
③ python全套视频教程(零基础-高级进阶JS逆向)
④ 百个项目实战+源码+笔记
⑤ 编程语法-机器学习-全栈开发-数据分析-爬虫-APP逆向等全套项目+文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go项目实现日志按时间及文件大小切割并压缩

关于日志的一些问题: 单个文件过大会影响写入效率,所以会做拆分,但是到多大拆分? 最多保留几个日志文件?最多保留多少天,要不要做压缩处理? 一般都使用 lumberjack[1]这个库完成上述这些操作 lumberjack //info文件wr…

uniapp实现地图点聚合

点聚合的最重要的一个地方是在 markers 中添加 joinCluster true 这个重要的属性,否则将无法开启点聚合功能。 其实在uniapp的官方文档里体现的不是那么清楚,但是在小程序文档提示的就相当清楚。 实现效果如下: 重点:需要编译在小…

【密码学】四、SM4分组密码算法

SM4分组密码算法 1、概述1.1初始变量算法1.2密钥扩展算法1.3轮函数F1.3.1合成置换T1.3.2S盒 2、算法设计原理2.1非平衡Feistel网络2.2T变换2.2.1非线性变换τ2.2.2线性变换L2.2.3基础置换 2.3密钥扩展算法的设计 1、概述 SM4分组密码算法是一种迭代分组密码算法,采…

SERDES关键技术

目录 一、SERDES介绍 二、SERDES关键技术 2.1 多重相位技术 2.2 线路编解码技术 2.2.1 8B/10B编解码 2.2.2 控制字符(Control Characters) 2.2.3 Comma检测 2.2.4 扰码(Scrambling) 2.2.5 4B/5B与64B/66B编解码技术 2.3 包传…

【C++】-二叉搜索树的详解(递归和非递归版本以及巧用引用)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

LAXCUS分布式操作系统引领科技潮流,进入百度首页

信息源自某家网络平台,以下原样摘抄贴出。 随着科技的飞速发展,分布式操作系统做为通用基础平台,为大数据、高性能计算、人工智能提供了强大的数据和算力支持,已经成为了当今计算机领域的研究热点。近日,一款名为LAXCU…

一起学算法(栈篇)

1.栈的概念 1.栈的定义 栈是仅限在表尾进行插入和删除的线性表,栈又被称为先进后出的线性表,简称“LIFO” 我们这次用数组作为我们栈的底层数据结构,代码会放到结尾供大家参考使用 2.栈顶的定义 栈是一个线性表,我们允许插入…

Coremail中睿天下|2023年第二季度企业邮箱安全态势观察

7月24日,Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》,对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室(以下简称AI实验室&#…

【云原生-制品管理】制品管理的优势

制品介绍制品管理-DevOps制品管理优势总结 制品介绍 制品管理指的是存储、版本控制和跟踪在软件开发过程中产生的二进制文件或“制品”的过程。这些制品可以包括编译后的源代码、库和文档,包括操作包、NPM 和 Maven 包(或像 Docker 这样的容器镜像&…

机器学习(一)---概述

文章目录 1.人工智能、机器学习、深度学习2.机器学习的工作流程2.1 获取数据集2.2 数据基本处理2.3 特征工程2.3.1 特征提取2.3.2 特征预处理2.3.3 特征降维 2.4 机器学习2.5 模型评估 3.机器学习的算法分类3.1 监督学习3.1.1 回归问题3.1.2 分类问题 3.2 无监督学习 1.人工智能…

【高级数据结构】并查集

目录 修复公路(带扩展域的并查集) 食物链(带边权的并查集) 修复公路(带扩展域的并查集) 洛谷:修复公路https://www.luogu.com.cn/problem/P1111 题目背景 A 地区在地震过后,连接…

数控机床主轴品牌选择及选型,如何维护和保养?

数控机床主轴品牌选择及选型,如何维护和保养? 数控机床是一种高精度、高效率、高自动化的机床。其中,主轴是数控机床的核心部件,承担着转动工件、切削加工的任务,决定了加工的转速、切削力度和加工效率。因此&#xff…

深空物联网通信中视频流的智能多路TCP拥塞控制|文献阅读|文献分析和学习|拥塞控制|MPTCP|SVC

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/categ…

前端构建(打包)工具发展史

大多同学的前端学习路线:三件套框架慢慢延伸到其他,在这个过程中,有一个词出现的频率很高:webpack 。 作为一个很出名的前端构建工具我们在网上随便一搜,就会有各种教程:loader plugin entry吧啦吧啦。 但…

企业可以申请DV https证书吗

DV https证书是有基础认证的数字证书,所以DV https证书也可以叫DV基础型https证书。DV基础型https证书是众多https证书中既支持个人,也支持企事业单位申请的https证书,所以企事业单位都可以申请DV基础型https证书,不论是企业门户网…

边写代码边学习之卷积神经网络CNN

1. 卷积神经网络CNN 卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习神经网络的架构,主要用于图像识别、图像分类和计算机视觉等任务。它是由多层神经元组成的神经网络,其中包含卷积层、池化层和全连接…

【数据结构】实验十:哈夫曼编码

实验十 哈夫曼编码 一、实验目的与要求 1)掌握树、森林与二叉树的转换; 2)掌握哈夫曼树和哈夫曼编码算法的实现; 二、 实验内容 1. 请编程实现如图所示的树转化为二叉树。 2. 编程实现一个哈夫曼编码系统,系统功能…

C语言预备

安装Visual studio 官方网址 https://visualstudio.microsoft.com/zh-hans/ 选择第一个社区版本(免费) 下载完成后打开安装包 安装完成后会自动打开程序选择c项目然后安装即可(c兼容c) 安装完成后启动程序注意这里需要注册也可…

scrapy框架简单实现豆瓣评分爬取案例

豆瓣网址:https://movie.douban.com/top250 1.创建scrapy框架 scrapy startproject 项目名(scrapy_test_one)创建好以后的目录是这样的 2.创建spider文件 在spiders目录下创建一个spider_one.py文件,可以随意命名,该文件主要是让我们进行数…

树、二叉树(C语言版)详解

🍕博客主页:️自信不孤单 🍬文章专栏:数据结构与算法 🍚代码仓库:破浪晓梦 🍭欢迎关注:欢迎大家点赞收藏关注 文章目录 🍊树的概念及结构1. 树的概念2. 树的相关概念3.树…