python爬虫之request库的使用(友好版)

news2025/4/6 11:42:47

以下所有爬取的网站都是可以爬取的,爬取时请先学学法律哦~

如有侵权,私信删除~

本章目录~。~

一,request库简介:

二,requests使用方法

1.GET请求

1.1,发起一个get请求

1.2,利用GET请求发送额外的信息

1.4,抓取网页信息

 1.5 抓取网页二进制数据(照片,视频,音频)

 1.6,请求头部(帮助我们转为浏览器的样式)

2.POST请求

2.1 POST请求访问

 2.2 POST请求的响应

2.2.1 网页访问状态码的几种结果:

3.requests高级用法

3.1文件上传 

3.2Cookie获取

3.3 Session维持

3.4 SLL证书验证

 3.5 超时设置

3.6 身份认证

 3.7 代理设置


一,request库简介:

        1,Requests是一个Python中的HTTP库,用于向Web服务器发送HTTP请求并获取响应。Requests库的使用方式与urllib库类似,但更加简单和灵活。Requests库支持HTTPS请求,并且可以自动处理cookies和会话,使得操作更加方便。

Requests库的主要特点如下:

  1. 简单易用:Requests库的使用方式简单明了,可以很容易地编写出高效、可靠的HTTP请求。
  2. 自动处理cookies和会话:Requests库可以自动处理cookies和会话,使得在处理Web服务器时更加方便和安全。
  3. 支持HTTPS:Requests库支持HTTPS请求,可以在安全的环境下发送HTTP请求。
  4. 可靠性高:Requests库的请求是异步的,这意味着它们可以在后台异步执行,不会阻塞主线程。此外,Requests库还支持连接池,可以确保每次请求都会使用相同的连接,提高了请求的可靠性。
  5. 多路复用:Requests库支持多路复用,可以将请求分派给多个异步线程处理,提高了处理效率。

2,安装下载

pip install requests

3,了解GET请求和POST请求

        HTTP中最常见的两种请求GET和OPST。

        GET请求:就是在浏览器中输入网址加回车就是GET请求,请求参数会直接包含到网址里,例如我们在百度搜索爬虫关键字,就会包含到请求的URL中

        

         POST请求:大多数在提交表单时发起的,例如在登录页面输入账号密码后,点击登录后通常以POST请求将数据以表单的形式传输,不会提现在URL中

        GET和POST是两种最常见的HTTP请求方法,它们在客户端与服务器之间传输数据时有一些关键区别:

  1. 用途:GET主要用于请求数据,而POST主要用于提交数据。GET请求用于获取数据,不会改变服务器上的数据;POST请求用于创建或更新服务器上的数据。
  2. 数据传输方式:GET请求将参数附加在URL上,参数之间使用&符号分隔。POST请求则将数据放在HTTP请求的消息体中,使用特定的编码格式。
  3. URL中的参数:GET请求中的参数是可见的,因为它们直接附加在URL上。这可能导致安全性问题,因为敏感信息可能会泄露。POST请求中的参数不会显示在URL中,因此相对更安全。
  4. 数据大小限制:GET请求对数据大小有限制,因为浏览器和服务器对URL长度有限制。POST请求没有这种限制,可以传输大量数据。
  5. 缓存:GET请求的响应通常会被浏览器缓存,而POST请求的响应通常不会被缓存。因此,使用GET请求可能会导致浏览器显示过时的数据,而POST请求不会。
  6. 幂等性:GET请求是幂等的,意味着无论请求多少次,服务器上的数据都不会发生变化。POST请求不是幂等的,因为每次请求都可能在服务器上创建或修改数据。
  7. 书签和历史记录:GET请求可以被添加到书签和浏览器历史记录中,而POST请求不会被添加。
  8. 服务器负载:一般来说,POST请求比GET请求对服务器产生更多的负载,因为POST请求可能需要处理更大的数据量和更复杂的操作。

二,requests使用方法

1.GET请求

1.1,发起一个get请求

import requests as rq  #别名为rq

# 该网页会判断客户端发起的请求是否为GET请求
url = "https://www.httpbin.org/get"
rq = rq.get(url)  # 发起GET请求
print(rq.text)  # 将内容转为text格式

如果成功发送了GET请求那么会返回一下结果: 

1.2,利用GET请求发送额外的信息

例如,我们要出入name值和age值:

import requests as rq

# 设定参数,以字典的形式传入
data = {
    "name": "张三",
    "age": "22"
}
# 该网页会判断客户端发起的请求是否为GET请求
url = "https://www.httpbin.org/get"
rq = rq.get(url, params=data)  # 发起GET请求,并用params传入设定参数
print(rq.text)  # 将内容转为text格式

传入的参数中如果带中文,那么久会自动转为十六进制的信息

如图: 

1.3,返回JSON格式数据方法

如果网页返回的类型虽然是str类型,但是它时JSON格式,如果想直接解析并返回结果,得到一个json格式的数据,可以直接调用json方法

import requests as rq


# 该网页会判断客户端发起的请求是否为GET请求
url = "https://www.httpbin.org/get"
rq = rq.get(url)  # 发起GET请求,并用params传入设定参数
print(f"字符串格式:{type(rq.text)}")  # 直接返回的格式类型为字符串
print(f"转为json格式:{type(rq.json())}")  # 转为json格式
print(f"json格式输出内容:{rq.json()}")  # 转为json格式

可以发现调用json格式的字符串转为了字典 

1.4,抓取网页信息

我想抓取以下网页的电影标签:Scrape | Movie

进入网页--摁F12进入开发者模式---用左上角 小箭头点击电影名字,可以看到该名字在h2的二号标题下 

当我们想抓取该网站的时候会出现以下错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='ssr1.scrape.center', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))

当出现该错误表示 “请求异常,SSL错误”解决办法就是引用urllib3的disable_warnings()来关闭警告,在用verify=False的方式关闭ssl认证,但还有其他方式请走链接:

(16条消息) requests.exceptions.SSLError 请求异常,SSL错误,证书认证失败问题解决_Xin学数据的博客-CSDN博客https://blog.csdn.net/qq_45476428/article/details/107254054

import requests as rq
import urllib3
urllib3.disable_warnings()  # 关闭不安全请求警告


url = "https://ssr1.scrape.center/"
# 发起GET请求,并用params传入设定参数,传入 verify=False 避免ssl认证
request = rq.get(url, verify=False)  
print(request.text) # 以text的格式返回

抓取到网页返回结果以后,想要提取h2包裹的电影名称,那么我们就用正则表达式的方式去提取

 那么正则表达式不熟悉的小伙伴请走一下链接:

(16条消息) Python3正则表达式_i鲸落i的博客-CSDN博客

 那么我们截取h2标题下的内容就可以了:

import requests as rq
import urllib3
import re

urllib3.disable_warnings()  # 关闭不安全请求警告


url = "https://ssr1.scrape.center/"
# 发起GET请求,并用params传入设定参数,传入 verify=False 避免ssl认证
request = rq.get(url, verify=False)
pattern = re.compile('<h2.*?>(.*?)</h2>', re.S) # 截取h2标题的内容,包括换行符在内的任意字符(. 不包括换行符)
titles = re.findall(pattern, request.text)
print(titles)

 抓取后的内容:

 1.5 抓取网页二进制数据(照片,视频,音频)

例如我们要抓取莫网站的免费音乐下载到本地:

打开网页---点到音乐详情---摁F12打开开发者模式----找到.mp3结尾的网址,发起请求即可 

例如:

我们知道图片,视频,音频这些文件本质上就是二进制吗组成的,所以我们在抓取网页的时候,将抓取的信息以二进制的信息转为字节码格式写入到文件中,保存下来就是一个完整的文件

文件写入,读取不会的可以走以下链接:

链接先等等 马上补上0.0 或者 自行百度,回头我会更新哈~

import requests as rq

url = "https://lu-sycdn.kuwo.cn/dddd43c69c11a0cf9a27988208dea300/645c9a7e/resource/n3/6/44/3638605905.mp3"
request = rq.get(url)  
# 当我们直接抓取返回数据的时候是二进制数据,会乱码,所以我们要将二进制码写到文件中
with open('可能.mp3', 'wb') as f:
    # content 转为字节码,也就是转为二进制的方式写入文件中
    f.write(request.content)

 抓取后的效果: 双击就可以播放啦

 

 1.6,请求头部(帮助我们转为浏览器的样式)

        在上面的实验中我们没有添加请求头部,这样的话在某些网站会发现这并不是一个正常的浏览器发送的请求信息,于是返回错误的结果或者异常报错,所以我们添加请求头部的方式如下:

随便找一个网页打开---摁下F12---找到user-Agent,就是你浏览器的头部信息,复制下来并以字典的格式定义一个变量加入到访问请求中

 在请求网页的时候加入:

import requests as rq

# 定义请求头部
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62"
}

url = "https://lu-sycdn.kuwo.cn/dddd43c69c11a0cf9a27988208dea300/645c9a7e/resource/n3/6/44/3638605905.mp3"
request = rq.get(url, headers=headers) # 将请求头部加入到get访问请求中

2.POST请求

2.1 POST请求访问

POST请求与GET请求类似,例如:我们访问一个可以测试post的网页

import requests as rq


# 定义请求头部
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62"
}

data = {'name': "zhangsan", "password": "123456"}  # 定义发起请求的数据
url = "https://www.httpbin.org/post" # 测试post请求的网址
request = rq.post(url=url, headers=headers, data=data) # data字样就是定义传输的数据所用
print(request.text)

会将我们的内容传入到网页中,并返回 

 2.2 POST请求的响应

当我们用post请求访问网页的时候,如何将页面中的信息(状态码,响应头等)返回呢?

import requests as rq


# 定义请求头部
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62"
}

# data = {'name': "zhangsan", "password": "123456"}
url = "https://www.baidu.com"
request = rq.get(url=url, headers=headers)
print(f"访问网页状态码:{request.status_code}")
print(f"访问网页头部信息:{request.headers}")
print(f"访问网页cookies:{request.cookies}")
print(f"访问网页网址:{request.url}")
print(f"访问网页历史:{request.history}")

测试结果:

2.2.1 网页访问状态码的几种结果:

  • 200:服务器正常响应。
  • 404:未找到请求的内容。
  • 500:服务器内部错误。
  • 503:服务器临时维护。
  • 403:禁止访问。
  • 301:永久重定向。
  • 302:重定向。
  • 303:可重定向。
  • 307:临时重定向。
  • 400:不允许的请求。
  • 401:未授权。
  • 402:付款表单未提交。
  • 403:禁止访问。
  • 404:未找到请求的内容。
  • 405:方法不受支持。
  • 406:不接受 HTTP 方法。
  • 407:请求的 URI 不合法。
  • 408:重复请求。
  • 409:冲突。
  • 410:超时。
  • 411:未知错误。
  • 412:格式错误。
  • 413:请求太大。
  • 414:不允许的请求体。
  • 415:未描述的错误。
  • 416:不支持的媒体类型。
  • 417:请求包含无效的参数。
  • 418:未处理的错误。
  • 429:过载。
  • 500:服务器内部错误。
  • 503:服务器临时维护。
  • 504:服务器遇到错误。
  • 505:网络错误。

----------------------------------以上就是request的基本操作-----------------------------------------------

3.requests高级用法

requests库高级用法,例如文件上传,Cookie设置,代理设置等

3.1文件上传 

我们随便传一张很小的图片到网页上试试看:

import requests as rq


# 定义请求头部
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62"
}

data = {'picture': open('1.png', 'rb')}  # 以二进制的方式读取文件内容
url = "https://httpbin.org/post"  
request = rq.post(url, files=data) # 将文件以二进制的方式传入到网页中
print(request.text)

运行结果:

上传文件后,网站会返回响应,响应中包含files字段和from字段,而from字段是空的,证明文件上传部分会单独用一个files字段来标识

3.2Cookie获取

3.2.1Cookie的作用:

Cookie是一种用于在Web应用程序中保存敏感信息,例如登录信息、个人身份验证码等,以便在用户与Web应用程序之间提供一个安全的通信通道。

Cookie的作用如下:

  1. 存储会话信息:Cookie允许您在不同的Web浏览器之间共享会话状态,这样您就可以在多个浏览器之间保持一致的用户体验。
  2. 提供安全性:Cookie只能在已经登录的用户之间传输,这样就可以防止未经授权的用户访问敏感信息。
  3. 加快网站的响应速度:由于Cookie只存储一次会话信息,因此可以减少网站的响应时间,提高用户的访问体验。
  4. 改进移动设备浏览体验:Cookie在移动设备上也能很好地工作,因为它们不会像浏览器那样被缓存。
  5. 支持跨域请求:Cookie可以允许来自不同域名的浏览器访问您的网站,这样就可以轻松地实现跨域资源共享。

需要注意的是,Cookie的使用也存在一些安全风险,如跨站脚本攻击(XSS)和中间人攻击等,因此应该采取一些措施来保护Web应用程序和用户的安全。

3.2.2获取Cookie:

当我们打开一个网页的时候---摁F12打开开发者模式----接着找到右边的cookie即可 

找到cookie以后将他加入到我们访问的头部即可,以字典的形式添加

例如:

 在访问请求时加入即可

3.3 Session维持

简介:

Session(会话)是一种在Web应用程序中用于管理用户身份验证和数据共享的机制。在Web应用程序中,每个用户都有一个唯一的会话ID,用于标识他们在Web应用程序中的身份。会话是用户与Web应用程序之间的关键部分,它允许用户在应用程序中进行相互操作,例如创建、更改和删除表单数据、上传文件和浏览历史记录等。

在传统的Web应用程序中,会话通常由服务器端的脚本语言(如PHP、Python和Ruby)或服务器端的框架(如Apache和Nginx)来管理。这些脚本或框架会在每次用户请求时生成一个新的会话ID,并将其存储在服务器端的数据库中。每次用户请求的响应都会包含一个包含新会话ID的响应头,以便服务器可以识别当前会话的状态。

在现代的Web应用程序中,会话管理已经变得更加容易和自动化。许多Web服务器和框架都提供了内置的会话管理功能,例如Nginx的session模块和PHP的session函数。这些功能可以自动处理会话的创建、存储、刷新和销毁等操作,并确保会话的安全性和可靠性。

为了维护会话,Web应用程序通常会在用户请求的处理过程中跟踪当前会话的状态,并在用户会话结束时将其状态刷新为“不活动”状态。这可以通过在服务器端存储会话ID并在每次请求的响应头中包含一个过期时间来实现。当用户会话过期时,服务器会将其状态刷新为“不活动”状态,并从数据库中删除相关数据。这可以通过定期重置会话ID和清理无用数据来确保会话的高可用性和安全性。

request如何实现呢?

例如:

import requests as rq

# 首先加入Session会话保持
s = rq.Session()
# 在访问请求的时候加入往里面传入的cookies # “/number/123”这就是我们加入的cookies
url = "https://www.httpbin.org/cookies/set/number/123"
request = s.get(url)
print(request.text)

输出结果:

         所以,利用Session可以做到模拟同一个会话而不用担心cookie的问题,它通常在模拟登录成功之后,进行下一次操作的时会用到。

3.4 SLL证书验证

        当我们访问一个网页的时候会出现,如图的问题,那么我门通过代码的方式绕开ssl认证,直接访问网页内容:

例如:

我们访问该网页  https://ssr2.scrape.center/

SLL证书提示:“连接不是私密连接”

我们通过get请求直接访问会出现以下问题:

requests.exceptions.SSLError: HTTPSConnectionPool(host='ssr2.scrape.center', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:997)')))

通过以下方式绕开:

# 在请求网页的时候将verify参数设置为False 表示忽略ssl证书验证

import requests as rq

url = "https://ssr2.scrape.center/"
# 在请求网页的时候将verify参数设置为False 表示忽略ssl证书验证
request = rq.get(url,verify=False)
print(request.text)

这样访问网页会提示我们url的证书时无效的,不过页面内容以及反馈给我们了:

 消除以上提示的方法如下:

看这个博客即可,上面也有类似的问题,所以这个地方是给直接跳到这部分的小伙伴看的哈~

(42条消息) requests.exceptions.SSLError 请求异常,SSL错误,证书认证失败问题解决_Xin学数据的博客-CSDN博客

 3.5 超时设置

        当我们访问一个页面的时候为了提升效率设置一个超时时间,如果规定时间内没有及时反馈信息,那么我们就让它异常报错即可,我们在请求中加入timeout参数即可

请求分为两个阶段:连接(connect)和读取(read)

以下是timeout的几种写法:

import requests as rq

url = "https://www.baidu.com/"
# 超过0.1秒没有反馈,就抛出异常
request = rq.get(url, timeout=0.1)
# 如果分别指定作用连接和读取的timeout 可以传入一个元组的方式
request = rq.get(url, timeout=(5, 30))
# 如果想永久等待 直接等于None,或者直接不加
request = rq.get(url, timeout=None)
request = rq.get(url)

3.6 身份认证

当我们遇到以下页面的时候,需要输入账户密码:

https://ssr3.scrape.center/

这个网站就是启用了基本身份认证

我门想得到该网页的信息用代码登录的方法如下:

可以通过requests库自带的身份验证功能auth参数

import requests as rq
from requests.auth import HTTPBasicAuth
import urllib3

# 关闭安全警告
urllib3.disable_warnings()

url = "https://ssr3.scrape.center"
request = rq.get(url, auth=HTTPBasicAuth('admin', 'admin'), verify=False)
print(request.status_code)  # 返回该网页请求的状态码
print(request.text)  # 将网页内容以text格式返回

 运行结果:

 3.7 代理设置

        在我们访问网站在测试的时候,请求几次都可得到返回的内容,但开始大规模爬取,频繁请求的时候,这些网页会跳出验证码或者其他认证网页,也可能直接对你的IP进行封禁,导致一定时间无法访问,那么为了防止这种情况,我们需要代理设置来解决问题,这时候需要用到proxies参数。当然还有一种方式那就是挂vpn。这里并不就不尝试了,就来说说proxies参数

使用 requests 库发送请求时,可以通过设置 proxies 参数来使用代理服务器。proxies 参数是一个字典,包含 http 和 https 两个键,分别对应 http 和 https 请求的代理地址。

import requests as rq

proxies = {
    "http:": "http://1.234.178.32:24200",
    "https:": "http://1.234.178.32:24200"
}

# 网页
url = "http://httpbin.org/ip"
# proxies 代理参数
request = rq.get(url, proxies=proxies)
print(request.status_code) # 网页请求返回值,200为正常
print(request.text.encode("utf-8")) # 将网页内容以text格式返回,字符级为utf8

        在上述代码中,我们首先定义了一个proxies字典,其中包含http和https两个键,分别对应代理服务器的地址。然后,在发送http请求时,我们将proxies参数设置为proxies字典,requests库会自动使用代理服务器发送请求。最后,我们打印出响应内容。

注意,在设置代理服务器地址时,必须包含连接方式(http或https)。同时,需要根据实际需要选择代理服务器的地址和端口号。

运行结果:

该ip是你的本机ip地址,如果网页有反代理技术,那么可以使用vpn的方式破解

还有一种代理方式SOCKS:

        SOCKS代理是一种计算机代理服务器,它能够为用户提供更高级别的网络连接和数据传输服务。SOCKS代理是一种全能代理,支持多种网络协议和数据传输方式,包括HTTP、FTP、SSH等。它可以将一端的系统连接到另外一端,提供更高效、更安全的数据传输服务。SOCKS代理标准端口为1080。

        这里不进行演示了~自行研究吧~

#注意:这里有代理,那么就有反向代理

        反向代理(Reverse Proxy)是一种代理服务器技术,它主要用于将来自客户端的请求转发到后端服务器。反向代理服务器位于后端服务器的前端,它接收来自客户端的请求,并将其转发到后端服务器。后端服务器处理完请求后,将结果返回给反向代理服务器,反向代理服务器再将结果返回给客户端。

        反向代理的主要功能包括缓存、负载均衡和安全性。它可以缓存静态内容,减少对后端服务器的请求,提高网站的性能和可靠性。同时,反向代理还可以作为负载平衡器,将请求路由到多个后端服务器,提高网站的并发能力和可用性。此外,反向代理还可以隔离客户端和后端服务器,提高网站的安全性。

        反向代理可以通过两种方式实现:一种是多个网站的web服务器提供代理,其域名都指向反向代理服务器;另一种是为网站的web服务器集群提供代理,反向代理作为负载平衡器来决定哪个Web服务器接收请求。

        总之,反向代理是一种重要的代理服务器技术,它可以提供缓存、负载均衡和安全性等功能,提高网站的性能、可靠性和安全性。

反向代理的技术让我们电脑端的ip一样会出现在网页中:

本次内容大概这么多,感谢观看~

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

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

相关文章

三、数据仓库实践-拉链表设计

1 写在开头的话 拉链表&#xff0c;学名叫缓慢变化维&#xff08;Slowly Changing Dimensions&#xff09;&#xff0c;简称渐变维&#xff08;SCD&#xff09;&#xff0c;俗称拉链表&#xff0c;是为了记录关键字段的历史变化而设计出来的一种数据存储模型&#xff0c;常见于…

蓝奏云软件库源码分享下载(后端源码)

正文&#xff1a; FreePlus后台管理系统是一个基于[Thinkphp]的后台管理系统&#xff0c;提供了基本的应用管理、用户管理 、卡密管理 、笔记管理 、邮箱管理 、商城管理 、论坛管理 、附件管理、软件库、工具箱等功能。#### 软件架构thinkphp5.1mysql实现#### 安装教程(php必…

Spark大数据处理讲课笔记--- RDD持久化机制

零、本讲学习目标 理解RDD持久化的必要性了解RDD的存储级别学会如何查看RDD缓存 一、RDD持久化 &#xff08;一&#xff09;引入持久化的必要性 Spark中的RDD是懒加载的&#xff0c;只有当遇到行动算子时才会从头计算所有RDD&#xff0c;而且当同一个RDD被多次使用时&#…

基于SpringBoot的家乡特色推荐系统的设计与实现

背景 设计一个家乡特色推荐系统&#xff0c;通过这个系统能够满足家乡特色文章的管理功能。系统的主要功能包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;文章分类管理&#xff0c;文章分享管理&#xff0c;系统管理等。 管理员可以根据系统给定的账号进行登…

堪比ChatGPT,Claude注册和使用教程

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Claude简介 Claude是一款人工智能聊天机器人。主要有以下特征: 使用自己的模型与训练方法,而不是基于GPT-3等开源框架。模型采用Transformer编码器与解码器的结构,并使用对话上下文的双向…

Spark大数据处理讲课笔记---RDD容错机制

零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失&#xff0c;则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式&#xff0c…

全国大学生数据统计与分析竞赛2021年【研究生组】-B题:“互联网+教育”用户消费行为分析预测模型(附获奖论文和python代码实现)

目录 摘要 1 问题重述 2 问题分析 3 符号说明 4 模型建立与求解 4.1 问题一 4.1.1 数据预处理 4.1.2 处理结果 4.2 问题二 4.2.1 城市分布情况 4.2.2 用户登录情况 4.3 问题三 4.3.1 模型建立 4.3.2 模型求解 4.3.3 模型优化 4.4 问题四 4.4.1 模型建立 4.4.…

Windows 编译 OpenCV 头疼 ? 已编译好的,你要不要吧

一、使用官方编译好的 【Qt】opencv源码&官方编译好的opencv在windows下使用的区别_外来务工人员徐某的博客-CSDN博客 官方替我们编译好了&#xff0c;可以直接拿来用&#xff0c;但是看到下面这两个文件夹就知道&#xff0c;官方是用msvc编译器编译的&#xff0c;所以还是…

2天搞定-从零开始搞-量化交易-Python 【案例A股量化交易】第一节

搭建windows电脑开发环境 一,下载并搭建python 环境 1:python 安装过程教程:https://blog.csdn.net/weixin_44727274/article/details/126017386 2:python 下载地址官网:https://www.python.org/downloads/windows/ (过程较慢耐心等待,多版本选择) 3:python 本人放…

chatgpt赋能Python-python_noj

Python NOJ - 一款适合Python学习者的在线编程环境 Python NOJ是一款在线的Python编程环境&#xff0c;其全称为Python Online Judge&#xff0c;是一款适合Python学习者使用的编程工具。接下来&#xff0c;我们将介绍其主要特点和优势&#xff0c;并探讨其与其他在线编程环境…

chatgpt赋能Python-python_nmpy

Python NumPy&#xff1a;提高数据科学和数学计算的效率 在数据科学和数学计算领域&#xff0c;Python一直是最受欢迎的语言之一。NumPy是一个优秀的Python库&#xff0c;它通过提供一个强大的多维数组对象和与之相关的各种函数&#xff0c;极大地提高了Python在数据科学和数学…

2022下半年上午题

2022下半年上午题 b b d a c d 在做加法前先用补码表示 c a d c a c b b 专利权需要申请&#xff0c;题目中没说公司申请了专利 c c 前向传播取大值 d 反向传播求关键路径 b b b d a c 先在前驱图中把信号量定义下去 然后定义p,v操作 然后直接看图 1:从p1出来…

Spark大数据处理讲课笔记-- 理解RDD依赖

零、本讲学习目标 理解RDD的窄依赖理解RDD的宽依赖了解两种依赖的区别 一、RDD依赖 在Spark中&#xff0c;对RDD的每一次转化操作都会生成一个新的RDD&#xff0c;由于RDD的懒加载特性&#xff0c;新的RDD会依赖原有RDD&#xff0c;因此RDD之间存在类似流水线的前后依赖关系…

CANFDCAN协议对比 - 基础介绍_02

目录 四、CAN和CANFD区别 1、保留位 2、FDF-FD格式 五、高速传输机制 1、位速率切换 (Bit Rate Switch) 2、波特率5MBit/s 3、BRS和CRC界定符之间采用更高的波特率 六、CANFD数据场 1、经典CAN中DLC&#xff1a;9种可能的长度 2、CANFD中DLC&#xff1a;16种可能的长…

ChatGPT你真的玩明白了?来试试国内免费版的ChatGPT吧!

文章目录 一、什么是ChatGPT二、ChatGPT的作用三、免费ChatGPT的使用四、写在最后 一、什么是ChatGPT ChatGPT全称为Chat Generative Pre-trained Transformer&#xff0c;Chat是聊天的意思&#xff0c;GPT是生成型预训练变换模型&#xff0c;可以翻译为聊天生成预训练转换器或…

抖音seo源码开发部署

抖音seo账号矩阵源码系统搭建&#xff0c;​ 抖音获客系统&#xff0c;抖音SEO优化系统源码开发,思路分享&#xff0c;分享一些开发的思路...... 账号矩阵霸屏系统源代码账号矩阵系统建设部署&#xff0c;短视频seo账号矩阵框架分析&#xff0c;开发语言为后台框架语言PHP pyt…

chatgpt赋能Python-python_nonetype报错

Python NoneType报错&#xff1a;原因、解决方法和预防措施 Python 是一种面向对象的高级编程语言&#xff0c;用于快速编写脚本和应用程序。但是&#xff0c;当我们在编写 Python 代码时&#xff0c;可能会遇到 NoneType 报错&#xff1b;这是一种类型错误&#xff0c;它发生…

接口自动化测试工具SoapUI下载安装以及简单使用教程

前言 SoapUI是Webservice开发的必备工具。SoapUI是一个开源测试工具&#xff0c;通过Soap/HTTP来检查、调用、实现Web Service的功能,而且还能对Webservice做性能方面的测试。SoapUI会根据WSDL的格式生成左边的列表树&#xff0c;双击Request1就能看到Soap请求报文的内容。 一…

笔记--大数据--大数据概念

大数据&#xff1a;指无法在一定时间范围内用常规软件工具进行捕捉、管理和 处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化 能力的海量、高增长率和多样化的信息资产。 按顺序给出数据存储单位&#xff1a;bit、Byte、KB、MB、GB、TB…

笔记--大数据--Hadoop--01--基础概念

Hadoop是什么 Hadoop是一个分布式系统基础架构 主要解决海量数据的存储和分析计算问题 Hadoop优势–4高 高可靠性&#xff1a;Hadoop底层维护多个数据版本&#xff0c;单个计算元素或存储故障也不会导致数据丢失 高扩展性&#xff1a;在集群中分配任务数据&#xff0c;可以方便…