详解爬虫基本知识及入门案列(爬取豆瓣电影《热辣滚烫》的短评 详细讲解代码实现)

目录

前言什么是爬虫?

爬虫与反爬虫基础知识

一、网页基础知识

 二、网络传输协议

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)请求过程的原理?

三、Session和Cookies

Session

Cookies

Session与Cookies的区别与联系

 四、Web服务器Nginx

五、代理IP

1、代理IP的原理

2. 分类

3. 获取途径

入门案列

爬虫步骤及思路:

主要步骤: 

完整代码 

总结


博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!

🍅文末三连哦🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

前言
什么是爬虫?

爬虫,也称为网页蜘蛛或网络机器人,是一种按照既定规则,在网络上自动爬取信息的程序或脚本。它模拟人操作客户端(如浏览器或APP)向服务器发起网络请求,以抓取所需的数据。爬虫的工作原理主要包括网页请求、数据解析和数据存储等步骤。

首先,爬虫需要确定要爬取的目标网址,并向目标网站发送HTTP请求获取网页的内容。在发送请求之前,爬虫可以选择合适的请求方法(如GET或POST),并可以设置请求头部信息以模拟浏览器的请求,避免被网站的反爬虫机制拦截。

其次,爬虫需要对获取到的网页内容进行解析。网页通常使用HTML、XML或JSON等标记语言编写,爬虫需要根据网页的结构和规则,提取出所需的数据。在解析过程中,爬虫还可以进行数据清洗和处理,以获取更加干净和规范的数据。

最后,爬虫将解析后的数据进行存储,供后续使用和分析。

爬虫与反爬虫基础知识

在正式学习爬虫知识之前,我们需要了解掌握相关的知识及概念,如浏览器前端页面知识、网络传输协议、Web服务器Nginx、代理IP、HTTP接口概念、Session和Cookie等。通过了解这些概念,我们可以更好地掌握爬虫基本原理,同时学会如何使用爬虫来收集和分析市场数据、社交媒体数据、新闻等信息,以做出更明智的商业和战略决策。

一、网页基础知识

如淘宝页面涉及的知识结构:

淘宝首页源代码: 

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="data-spm" content="a2638t"/><meta name="keywords" content=""/><meta name="description" content=""/><title>阿里巴巴1688.com - 全球领先的采购批发平台,批发网</title><!-- 引用样式 --><link rel="stylesheet" href="//gw.alipayobjects.com/os/lib/alifd/next/1.19.24/dist/next.min.css"/><link rel="stylesheet" type="text/css" href="https://sucai.alicdn.com/boot-build-page-prod/71-59942-index.css"/><script type="text/javascript" data-sc-pos="head" src="//g.alicdn.com/mtb/lib-mtop/2.4.2/mtop.js"></script><script src="//g.alicdn.com/assets-group/jplus/0.0.11/index.js" crossorigin></script><script src="//g.alicdn.com/assets-group/cbu-splus/0.1.0/index.js" crossorigin></script><script>var jplusUtil = window.jplusUtil;var setConfig = jplusUtil && jplusUtil.setConfig;var renderAsync = true;setConfig('exp', {config: {selector: '.offer',visible: '0.01',duration: '1',propsMap: {url: 'data-jplus-exp-url'}}})var browserRenderData = {}; //渲染用数据var urlParams = {"cosite":"360jj","exp":"zgc_tab:A;offerWwClick:A","hpageId":"krump-2125","keywords":"淘宝网首页","location":"landing_t4","p4pid":"c28241d4dafe1","pageNo":1,"pageSize":20,"pageUrl":"https://p4psearch.1688.com/page.html?keywordid=52595543980&cosite=360jj&keywords=%E6%B7%98%E5%AE%9D%E7%BD%91%E9%A6%96%E9%A1%B5&trackid=88576672928645988612270&location=landing_t4&ptid=hr40f198ac2e9981&exp=zgc_tab%3AA%3BofferWwClick%3AA&hpageId=krump-2125&bd_vid=e9f3037c3e6f91d0","platform":"PC","ptid":"hr40f198ac2e9981","pvType":"COMMON","se":"","ssr":false,"trackid":"88576672928645988612270"}</script></head>
<body data-bu="1688" data-spm="b_78128457"><script>
with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&aplus&asid=AQAAAABSEh5mCpDDLwAAAABaIrI1no31Rg==&aat=&abb=&ret=ali%5fresin%5ftrace%3dc%5fp4pid%3dc28241d4dafe1%7cc%5fbid%3d2%2d5%2d6%2d268%2dkrump%2d2125%2d2601%7c202403311%7cc%5froute%3d1&c_signed=&hn=p4p%2dlp033044050177%2ecenter%2ena620&at_bu=cbu",id="beacon-aplus",src="//g.alicdn.com/alilog/??/aplus_plugin_b2bfront/index.js,mlog/aplus_v2.js")
</script>
<div id="app"></div><!-- 引用页面 JS -->
<script src="https://sucai.alicdn.com/boot-build-page-prod/71-59942-index.js"></script><!-- 性能监控与异常打点 -->
<script>var g_config = window.g_config || {};g_config.jstracker2 = g_config.jstracker2 || {};g_config.jstracker2.pid = '25687-tracker';
</script><script src="//g.alicdn.com/tb/tracker/index.js"></script></body>
</html>

通过代码可以知识网页主要由HTML、CSS和JS三个部份组成。其作用:

  1. HTML与网页结构
    • HTML(HyperText Markup Language,超文本标记语言):是构建网页的标准标记语言。它定义了网页的结构和内容,通过标签(tags)来标记文本、图片、链接等各种元素。爬虫需要了解HTML标签和它们的用途,以便能够正确地解析网页并提取所需信息。
  2. CSS与网页样式
    • CSS(Cascading Style Sheets,层叠样式表):用于描述网页的样式,如颜色、字体、布局等。虽然爬虫主要关注网页的内容,但了解CSS有助于更好地识别和处理网页元素,特别是在处理动态加载或隐藏的内容时。
  3. JavaScript与网页交互
    • JavaScript:是一种用于网页交互的脚本语言。现代网页中,很多内容是通过JavaScript动态生成的,或者需要通过JavaScript交互来展示。爬虫需要能够处理JavaScript代码,以便获取这些动态生成的内容。有些高级爬虫会使用无头浏览器(headless browsers)来执行JavaScript并渲染网页。

 二、网络传输协议

网络传输协议是指在计算机网络中为了使不同的计算机之间能够传输数据而制定的一种约定。它是计算机网络的基础,是实现计算机数据传输和信息交换的重要手段。在网络传输协议中,通信双方需要达成共识,以确定数据传输的格式、数据包大小、传输速率、数据校验等参数,以保证数据传输的可靠性、安全性和高效性。常见的传输协议:

TCP/IP (Transmission Control Protocol/Internet Protocol):

  • TCP (Transmission Control Protocol): TCP是一种面向连接的协议,提供可靠的数据传输服务。它通过三次握手建立连接,确保数据按顺序、完整地传输到目标地址。TCP还负责流量控制和拥塞控制。
  • IP (Internet Protocol): IP是一种数据包交换的协议,它负责定义数据包的格式和发送到目标地址的方式。IP地址用于唯一标识网络上的设备。

UDP (User Datagram Protocol):

  • UDP是一种无连接的协议,不保证数据传输的可靠性和顺序。它比TCP快速,适用于一些对实时性要求较高的应用,如视频流和语音通话。

HTTP/HTTPS (HyperText Transfer Protocol/Secure):

  • HTTP: HTTP是一种应用层协议,用于从网络服务器传输超文本到本地浏览器。它是无状态的,每个请求独立处理,常用于网页浏览。
  • HTTPS: HTTPS是HTTP的安全版本,使用SSL/TLS加密数据传输,提供数据的机密性和完整性。它在电子商务、在线银行等需要安全传输数据的场景中广泛应用。

FTP (File Transfer Protocol):

  • FTP是用于在计算机之间传输文件的协议。它支持上传、下载和管理文件,通常用于网站维护、文件备份等。

SMTP (Simple Mail Transfer Protocol):

  • SMTP是用于电子邮件发送的协议。它定义了邮件如何从发送者的电子邮件服务器传输到接收者的电子邮件服务器。

HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)请求过程的原理?

其是应用层协议,主要用于在客户端和服务器之间传输超文本内容。它们的请求过程有一定的相似性,但HTTPS在传输层使用了SSL/TLS加密来增加安全性。下面我们详细讲解HTTP/HTTPS的请求过程:

HTTP请求过程:

  1. 建立连接

    • 客户端(通常是浏览器)向服务器发起一个TCP连接,通常在端口80。
    • 三次握手完成后,TCP连接建立。
  2. 发送请求

    • 客户端发送一个HTTP请求到服务器,请求包括HTTP方法(如GET、POST)、URL、HTTP版本、请求头(如User-Agent、Accept等)和可选的请求体(如POST数据)。
  3. 服务器处理请求

    • 服务器接收到请求后,解析HTTP方法、URL和头部信息。
    • 根据请求的内容,服务器执行相应的操作,可能是查询数据库、读取文件或执行其他业务逻辑。
  4. 发送响应

    • 服务器将处理结果封装成HTTP响应,响应包括HTTP版本、状态码、响应头(如Content-Type、Server等)和响应体(如HTML页面、JSON数据等)。
    • 服务器通过TCP连接将响应发送回客户端。
  5. 关闭连接

    • 一旦响应发送完成,TCP连接可能会立即关闭(短连接),也可能会保持一段时间以供后续请求使用(长连接)。

HTTPS请求过程:

HTTPS在HTTP的基础上增加了SSL/TLS加密来保护数据的机密性和完整性。以下是HTTPS请求过程的详细步骤:

  1. 建立连接

    • 客户端发起一个TCP连接到服务器的443端口。
    • TCP连接建立后,客户端和服务器之间开始SSL/TLS握手过程。
  2. SSL/TLS握手

    • 客户端发送一个SSL/TLS客户端Hello消息,包括支持的加密算法、随机数等。
    • 服务器回应一个SSL/TLS服务器Hello消息,选择一个加密算法、发送证书等。
    • 客户端验证服务器的证书,然后生成会话密钥。
    • 客户端使用服务器的公钥加密会话密钥,并发送给服务器。
    • 服务器使用私钥解密会话密钥,双方都获取了会话密钥用于后续通信。
  3. 发送加密请求

    • 客户端使用会话密钥加密HTTP请求,生成一个加密的HTTP请求。
    • 加密后的请求通过TCP连接发送到服务器。
  4. 服务器解密请求

    • 服务器使用会话密钥解密收到的HTTP请求。
    • 服务器处理解密后的请求,生成HTTP响应。
  5. 发送加密响应

    • 服务器使用会话密钥加密HTTP响应。
    • 加密后的响应通过TCP连接发送回客户端。
  6. 关闭连接

    • 加密的HTTP响应发送完成后,TCP连接可能会关闭或保持开放。

淘宝网页请求返回数据:

三、Session和Cookies

Session和Cookies是Web开发中常用的两种技术,用于在用户与服务器之间维护状态和数据。下面将详细解释Session和Cookies的概念、原理、使用场景以及它们之间的区别与联系。

Session

Session(服务端会话跟踪技术)是指在一个特定时间段内,单个客户端与Web服务器之间的一系列交互过程。在这个过程中,服务器会为每一个会话分配一个唯一的Session对象,用于存储与该会话相关的数据。Session数据保存在服务器端,因此相对于客户端存储的Cookies来说,Session数据更加安全,不易被窃取或截获。

Session的工作流程如下:

  1. 当客户端首次访问服务器时,服务器会创建一个新的Session对象,并为其分配一个唯一的Session ID。
  2. 服务器会将这个Session ID以某种方式(如响应报文或重写URL)发送给客户端,客户端会将其保存在本地(通常是保存在浏览器的内存中)。
  3. 在后续的请求中,客户端会将这个Session ID发送给服务器,以便服务器能够识别出当前会话并获取到对应的Session对象。
  4. 通过这个Session对象,服务器可以在多次请求之间共享数据,实现用户状态的维护。

Cookies

Cookies是一种小型文本文件,由服务器发送到客户端并保存在客户端的本地终端上。这些文件通常经过加密,用于存储用户信息,以便在后续的请求中进行识别和跟踪。Cookies的主要作用是帮助网站记住用户的状态和偏好,以便提供更加个性化的服务。

Cookies的工作原理如下:

  1. 当客户端首次访问服务器时,服务器会创建一个包含用户信息的Cookies对象,并将其发送给客户端。
  2. 客户端收到Cookies后,会将其保存在本地(如浏览器的Cookie缓存中)。
  3. 在后续的请求中,客户端会自动将保存在本地的Cookies发送给服务器。
  4. 服务器通过解析这些Cookies,可以获取到用户的身份信息和其他相关数据,从而进行相应的处理。

Session与Cookies的区别与联系

存储位置:一般Session数据存储在服务器端,而Cookies数据存储在客户端

数据安全性:由于Session数据存储在服务器端,因此相比于客户端存储的Cookies数据来说更加安全。而Cookies数据容易被窃取或截获,存在安全隐患。

数据大小与数量限制:Session在理论上没有大小限制,只受限于服务器的内存大小。而Cookies有大小限制以及浏览器在存储Cookies的数量上也有限制。

使用场景:Session通常用于存储重要的用户信息或会话数据,而Cookies则更多地用于存储用户的偏好设置、登录状态等轻量级数据。

 四、Web服务器Nginx

Web服务器Nginx是一款高性能的HTTP和反向代理服务器,具有高并发、轻量级、模块化、异步非阻塞的事件驱动模型等优点而广受好评。

Nginx最初由俄罗斯人伊戈尔·赛索耶夫为Rambler.ru站点开发,并于2004年首次公开发布。在中国大陆,很多知名网站如百度、京东、新浪、网易、腾讯、淘宝等都是使用Nginx作为Web服务器。

Nginx的主要特点包括:

  1. 高并发、高性能:Nginx能够处理大量并发连接,支持高达50,000个并发连接数,并经受高负载的考验。其吞吐量比传统的Web服务器高很多倍,使得它非常适合高流量、高负载的网站和应用。
  2. 轻量级:Nginx的代码精简,功能简洁,占用资源少,启动和运行速度快。同时,其分布式架构和优秀的容错机制使得Nginx在服务器出现故障时能够自动切换到备份服务器,保证服务的连续性和稳定性。
  3. 模块化:Nginx的模块化架构使得它的扩展性非常好,支持多种模块和插件,可以通过添加模块和插件来实现更多的功能。
  4. 异步非阻塞的事件驱动模型:与Node.js相似,Nginx使用异步非阻塞的事件驱动模型来处理请求,这使得它能够高效地处理大量并发连接。
  5. 高可靠性:Nginx支持热部署,启动简单,可以做到7*24不间断运行。此外,它的架构是分布式的,可以通过多个节点实现负载均衡,提高系统的可靠性和可用性。

Nginx在Web服务中扮演了多个重要角色:

  1. 静态资源服务:Nginx可以作为静态资源服务器,提供图片、视频、CSS、JS等静态资源的访问服务。
  2. 反向代理服务:Nginx可以作为反向代理服务器,将客户端请求转发到后端服务器,并缓存请求结果以提高性能。同时,它支持多种负载均衡策略,如轮询、加权轮询和IP hash等,可以根据需要选择合适的策略来分发请求。
  3. API服务:Nginx可以与OpenResty等框架结合,提供API服务。

此外,Nginx还具有良好的配置性和安全性。其配置文件简单易懂,方便管理员进行配置和管理。同时,Nginx可以通过限制访问IP、防止DDoS等多种方式来保护服务器的安全。

五、代理IP

1、代理IP的原理

代理IP的工作原理基于代理服务器。当A机用户电脑通过代理服务器C机发送请求时,代理服务器会代表用户向目标服务器B机发送请求,然后将目标服务器B机的响应返回给用户。这样,目标服务器B机只能看到代理服务器C机的IP地址,而不知道真实的用户IP地址。

IP代理原理图:

2. 分类

根据代理IP的类型和使用场景,代理IP可以分为以下几类:

  • HTTP代理:主要用于HTTP协议的代理,适用于网页浏览等。

  • HTTPS代理:专用于HTTPS协议的代理,支持SSL加密的网站访问。

  • SOCKS代理:支持多种协议的代理,包括HTTP、HTTPS和FTP等,更为灵活。

  • 透明代理:用户不需要进行任何设置,网络请求会自动通过代理服务器。

  • 匿名代理:代理服务器会隐藏用户的真实IP地址,但目标服务器可以知道用户使用了代理。

  • 高匿代理:完全隐藏用户的真实IP地址,目标服务器无法知道用户使用了代理。

3. 获取途径

获取代理IP的途径多种多样,但需注意代理IP的可用性和安全性:

  • 免费代理IP网站:有一些网站提供免费的代理IP列表,用户可以直接复制使用。但免费代理IP通常不稳定,速度慢,安全性差。

  • 付费代理IP服务:有专业的代理IP提供商提供付费的代理IP服务,通常提供更稳定、更快速、更安全的代理IP。

  • 自建代理服务器:用户可以自己租用或购买服务器,然后安装代理软件,自建代理服务器,这样可以完全控制代理IP的质量和安全性。

  • API接口:一些代理IP提供商提供API接口,用户可以通过API接口动态获取代理IP,方便集成到自己的应用或工具中。

  • 扫描器和爬虫:技术比较高的用户可以使用代理IP扫描器或爬虫工具,从网络上自动扫描和收集代理IP。

在这里插入一个小故事哦!对IP代理感兴趣的同学可以关注一下哦!

入门案列

爬取豆瓣的评论是一个常见的爬虫练习。今天我们利用基于Python来展示爬虫过程,使用BeautifulSoup和requests库来爬取豆瓣电影《热辣滚烫》的短评。

爬虫步骤及思路:

导入必要的库:requests用于发送HTTP请求,BeautifulSoup用于解析HTML。

定义fetch_comments函数:这个函数接收一个URL,发送GET请求获取页面内容,然后使用BeautifulSoup解析页面,提取评论并返回。

if __name__ == '__main__':部分:

  • 定义基础URL,它是不包括页数和其他参数的URL。
  • 初始化一个空列表all_comments来存储所有评论。
  • 循环获取前10页的评论:
    • 构建完整的URL,其中start参数用于指定从哪里开始获取评论。
    • 调用fetch_comments函数获取当前页的评论。
    • 将获取的评论添加到all_comments列表中。
  • 输出所有获取的评论,包括评论的序号和评论内容。

请确保已安装requestsbeautifulsoup4库。如果还未安装,可以使用以下命令安装: 

pip install requests beautifulsoup4

主要步骤: 

第一步:设置请求头,模拟浏览器访问 

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}

第二步:发送GET请求获取页面内容并检测返回结果

  response = requests.get(url, headers=headers)

 第三步:使用BeautifulSoup解析页面内容

soup = BeautifulSoup(response.text, 'html.parser')

第四步:主要获取评论并输出评论内容

完整代码 

import requests
from bs4 import BeautifulSoupdef fetch_comments(url):# 设置请求头,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}# 发送GET请求获取页面内容response = requests.get(url, headers=headers)# 检查响应状态码,确保请求成功if response.status_code != 200:print('爬取失败')return# 使用BeautifulSoup解析页面内容soup = BeautifulSoup(response.text, 'html.parser')# 初始化一个空列表来存储评论comments = []# 找到所有的评论元素comment_items = soup.find_all('span', class_='short')# 遍历每个评论元素,提取评论文本并添加到列表中for item in comment_items:comments.append(item.text.strip())return commentsif __name__ == '__main__':# 基础URL,不包括页数和其他参数base_url = 'https://movie.douban.com/subject/36081094/comments'# 初始化一个空列表来存储所有评论all_comments = []# 循环获取前10页的评论for i in range(10):# 构建完整的URL,包括start参数用于指定从哪里开始获取评论url = f'{base_url}?start={i * 20}&limit=20&status=P&sort=new_score'# 调用fetch_comments函数获取当前页的评论comments = fetch_comments(url)# 将获取的评论添加到all_comments列表中all_comments.extend(comments)# 输出所有获取的评论for idx, comment in enumerate(all_comments, 1):print(f'{idx}. {comment}')

 官网评论情况:

获取的评论结果:

总结

首先,我们详细探讨了网页知识、网络传输协议、代理IP的工作原理、应用场景以及设置方式。代理IP通过第三方服务器(代理服务器)转发网络请求,从而隐藏真实IP地址,保护用户隐私和数据安全。它在网络安全、SEO优化、数据采集以及安全加固等方面有着广泛的应用。在设置代理IP时,我们可以通过浏览器、系统或软件等方式进行设置,但需要注意选择可靠的代理服务商并遵守相关法律法规。同时我们也演示如何利用requests库来爬取豆瓣评论,最主要是学会爬虫的原理以及思想思路,但我们也需要遵守相关的法律。

通过今天的学习,我们对代理IP和Nginx有了更深入的了解,必然可以为今后的Web相关工作提供了有力的基础支持。同时,我们也意识到在使用这些技术时需要遵守相关法律法规,确保合法合规地运用它们。

创作不易,你的支持是我的不竭动力,感谢大家的三连哦!

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

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

相关文章

Java:如何轻松获取当前执行的方法名

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在编程的世界里&#xff0c;经常会遇到各种各样的问题。有时候&#xff0c;需要了解当前执行的方法名&#xff0c;以便更好地调试代码或者记录日志。那么&#xff0c;如何在Java中轻松获取当前执行的方法名呢&#x…

【linux备份文件】将文件夹copy到另一位置解决方案

要将文件夹压缩成zip文件&#xff0c;可以使用以下命令&#xff1a; zip -r <压缩文件名.zip> <文件夹路径> 复制代码 其中&#xff0c;<压缩文件名.zip>是你希望生成的zip文件的名称&#xff0c;<文件夹路径>是需要压缩的文件夹的路径。 例如&#xf…

Cesium简单案例

一、Cesium组件 1、HTML <template><div id"cesiumContainer"><!-- 地图工具栏 --><ul class"mapTools"><li v-for"item in toolsData" :key"item.id" click"toolsClick(item)"><!-- 显…

for in 遍历对象,顺序不对

第一次遍历对象会导致时间乱序&#xff0c;如下&#xff1a; var obj { "key1":{"tenantId":""}, "key2":{"tenantId":"1720336885402484738"}, "key16":{"areaId":"1772463994999468…

股权融资成本GLS模型计算

一、模型公式 式中&#xff1a; r 为股权融资成本 P为股价 B为每股净资产 FROE为预测每股净资产收益率 目标&#xff1a;求解股权融资成本r 二、模型口径参考来源 PS&#xff1a;实际以代码为准 ①FROE&#xff08;预测每股净资产收益率&#xff09;: 资本市场开放与…

“R+遥感”的水环境综合评价方法实践技术应用

张博士&#xff0c;来自重点高校及科研院所一线科研人员&#xff0c;长期从事机器学习、遥感技术与应用研究&#xff0c;主持多项国家级科研项目&#xff0c;编写著作3部&#xff0c;第一作者发表科研论文20余篇。对国内外遥感技术的多平台、多传感器应用现状&#xff0c;以及涉…

基于python的pdf2word(可以批量转换)

介绍 pdf2word是一个基于Python的命令行工具,可以将PDF文件批量转换为Word文档。该项目利用了Python的强大功能和多个第三方库,如pdfminer和python-docx,以实现高效、准确的转换。 项目功能: 批量转换:用户可以指定一个文件夹,pdf2word会自动查找该文件夹中的所有PDF文…

【leetcode面试经典150题】59. 合并两个有序链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Elasticsearch:简化 KNN 搜索

作者&#xff1a;来自 Elastic Panagiotis Bailis 在这篇博客文章中&#xff0c;我们将深入探讨我们为了使 KNN 搜索的入门体验变得更加简单而做出的努力&#xff01; 向量搜索 向量搜索通过在 Elasticsearch 中引入一种新的专有的 KNN 搜索类型&#xff0c;已经可以使用一段…

题解:P9426 [蓝桥杯 2023 国 B] 抓娃娃

思路 1.其实题目保证了 max ⁡ r i − l i ≤ min ⁡ R i − L i \max{r_i − l_i} \le \min{R_i − L_i} maxri​−li​≤minRi​−Li​&#xff0c;那么如果占了一半的话&#xff0c;那么肯定包含了中点&#xff0c;做一个前缀和就好了。 2.因为涉及了小数&#xff0c;给每…

【粉丝福利 | 第5期】教你快速入门三大层次学习企业架构框架TOGAF

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 三大层次学习…

如何取消电脑屏幕保护?学会这3招,操作无难度!

“我之前在电脑上设置了电脑屏幕保护&#xff0c;现在想将它取消掉&#xff0c;大家有什么比较好的方法可以分享一下吗&#xff1f;” 在日常使用电脑的过程中&#xff0c;屏幕保护程序是一个常见的功能。它可以在电脑空闲一段时间后自动启动&#xff0c;以动画或图片的形式展示…

玄子Share-网络布线与数制转换

玄子Share-网络布线与数制转换 网络传输介质 信号概述 什么是信号 信息数据信号 信号的分类 模拟信号数字信号 信号在传输过程中产生的失真 噪声距离速度 数字信号的优势 抗干扰能力强传输距离远并能保证质量 双绞线 双绞线 总共8根双绞线&#xff0c;两两绞合在一起常用…

C语言—常用字符串函数剖析

字符串函数 cplusplus.com/reference/cstring/ 更多没有总结到的函数大家可以自行查阅 这篇文章只是把最需要知道的函数做一个总结 strlen size_t strlen ( const char * str );字符串已经 ‘\0’ 作为结束标志&#xff0c;strlen函数返回的是在字符串中 ‘\0’ 前面出现的…

软考 - 系统架构设计师 - 架构风格例题

问题一&#xff1a; 什么是软件架构风格&#xff1f; 软件架构风格指特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式。惯用模式反映了众多系统所共有的结构和语义。 集成开发环境与用户的交互方式 &#xff08;实际上询问在交互方面&am…

聚观早报 | 华为Pura70系列先锋计划;月之暗面升级Kimi

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月19日消息 华为Pura70系列先锋计划 月之暗面升级Kimi OPPO Find X7将推白色版本 波士顿动力推出人形机器人 v…

Tomcat漏洞利用工具-TomcatVuln

检测漏洞清单 CVE-2017-12615 PUT文件上传漏洞 tomcat-pass-getshell 弱认证部署war包 弱口令爆破 CVE-2020-1938 Tomcat 文件读取/包含项目地址 https://github.com/errors11/TomcatVuln TomcatVuln put文件上传 ajp协议漏洞 默认读取web.xml文件&#xff0c;漏洞利用…

RedHat9 KVM虚拟技术

以下有使用RedHat9单独的虚拟机也有使用RHEL9学员练习机和RHEL7学员练习机 KVM虚拟技术介绍 Linux的KVM(Kernel-based Virtual Machine)虚拟技术是一种基于Linux内核的虚拟化解决方案。它允许在单个物理服务器上创建和运行多个隔离的虚拟机,每个虚拟机都有自己的操作系统和…

启动appium服务的2种方法(python脚本cmd窗口)

1.通过cmd窗口命令来启动 2.通过python代码启动 2.1启动单个appium服务 2.2启动多个appium服务 3.端口说明 一.端口号设置Appium服务器端口&#xff1a;4723 bp端口&#xff1a;4724 Appium服务器端口&#xff1a;4725 bp端口&#xff1a;4726可以看到appium服务器端口和bp端…

3D抓取算法的网络结构原理及作用

3D抓取算法是一个基于深度学习的算法&#xff0c;旨在从点云数据中预测出最佳的抓取姿态。该算法的网络结构主要由接近网络、操作网络和容忍网络三个网络组成。下面我将详细讲解这三个网络的原理和作用。 1. ApproachNet&#xff08;接近网络&#xff09; 原理&#xff1a;Ap…