当前位置: 首页 > news >正文

crapy 爬虫框架的使用

1.scrapy框架安装

安装前先安装python3和pycharm 社区版

执行命令安装scrapy,

pip install scrapy

2.创建项目

执行命令:

scrapy startproject test_spider

如图:

3.使用pycharm大开项目并设置pipenv虚拟机环境

虚拟环境是为了依赖隔离,打开项目,如图:

点击设置,如图:

点击add interpreter,然后选择 pipenv 环境,如图:

 

 然后选择OK,就设置成功了,如图:

4.爬取信息

在项目路径下执行命令:

scrapy genspider getjobsinfo 目标网址

如:scrapy genspider getjobsinfo 求职_找工作_招聘_2024年招聘信息-智联招聘

如图:

可以看到在spiders包下创建了一个getjobsinfo的pyhthon文件,这就是刚刚创建的爬虫。

爬虫代码编写:

from scrapy import Request, Selectorclass GetjobsinfoSpider(scrapy.Spider):name = 'getjobsinfo'allowed_domains = ['zhaopin.com']# start_urls = ['https://www.zhaopin.com/']def start_requests(self):#  提交爬取路径交给引擎,开始爬取yield Request(url='https://www.zhaopin.com/')def parse(self, response, **kwargs):#  拿到响应体 使用xpath解析数据jobs_list = Selector(text=response.text).xpath("//a[@class='zp-jobNavigater__pop--href']/text()").extract()  citys_list = Selector(text=response.text).xpath( "//div[@class='footerFuncCity clearfix']/ul/li/strong/a/text()").extract()  print(jobs_list)print(citys_list)

5.重新安装scrapy

因为虚拟机的环境是隔离的,代码中找不到scrapy的库,所以要重新安装scrapy,如图:

使用命令安装,或者ide快捷安装,如图:

 

 

 6.集成selenium

selenium一个浏览器内核,可以模拟浏览器的行为,解决反爬虫的网站数据抓取。
打开middlewares.py,编辑TestSpiderDownloaderMiddleware类。修改如下内容。

实现思路:拿到响应体后,使用BeautifulSoup4解析出网页的文本,如果文本数量小于200,就使用selenium重新爬取。

先要在虚拟环境中安装BeautifulSoup4和selenium,同时将Chrome驱动放入虚拟环境下的python根目录。如图:

 驱动版本需要和安装的浏览器版本一致:
查看驱动版本:

 

下载驱动的链接地址:
CNPM Binaries Mirror
由于我的浏览器版本比较新,所有还未正式发布驱动,找了一个临时地址:
https://googlechromelabs.github.io/chrome-for-testing/

使用命令安装依赖:

pip install BeautifulSoup4
pip install selenium

修改TestSpiderDownloaderMiddleware类,导入依赖:

from bs4 import BeautifulSoup
from scrapy import signals
from scrapy.http import HtmlResponse
from selenium import webdriver
from selenium.common import TimeoutException

增加构造函数和析构函数,并且修改process_response函数:

    def __init__(self):# 在初始化方法中创建Chrome实例options = webdriver.ChromeOptions()options.add_argument('--headless')  # 设置无界面self.webdriver = webdriver.Chrome(options=options)def __del__(self):self.webdriver.close()  # 关闭窗口self.webdriver.quit()  # 关闭浏览器def process_response(self, request, response, spider):try:# 提取响应体文本pure_text = BeautifulSoup(response.body).get_text()if len(pure_text) < 200:print('Chrome driver begin...')self.webdriver.get(url=response.url)# wait = WebDriverWait(self.webdriver, timeout=20)return HtmlResponse(url=response.url, body=self.webdriver.page_source,encoding='utf-8')  # 返回selenium渲染之后的HTML数据else:return responseexcept TimeoutException:return HtmlResponse(url=response.url, encoding='utf-8', status=500)finally:print('Chrome driver end...')

如图:

中间件修改完成后在settings.py中设置使用我们修改过的中间件, 设置里默认有写,取消注释即可,TestSpiderDownloaderMiddleware是中间件的类名。
如图:

7.item接收数据

爬取到的数据需要使用item进行接收,以便进行下一步处理,在items.py中添加一个item。

class JobInfo(scrapy.Item):job_name = scrapy.Field() job_salary = scrapy.Field()  job_place = scrapy.Field()  job_experience = scrapy.Field()  job_education = scrapy.Field()  job_tag = scrapy.Field() company_name = scrapy.Field()  company_type = scrapy.Field() company_scale = scrapy.Field()  link = scrapy.Field() 

8.使用回调

这里有一个问题,下载到的页面还会使用当前的parse方法解析数据,这并不是我们所期望的,所以要在这里添加一个回调,使用其他方法解析这个Request,所以需要再写一个回调方法,使用该回调方法解析下一步的数据。

同时在该回调方法里解析数据,然后用item接收。

修改getjobsinfo.py的代码

import scrapy
from scrapy import Request, Selector
from test_spider.items import JobInfo
class GetjobsinfoSpider(scrapy.Spider):name = 'getjobsinfo'allowed_domains = ['zhaopin.com']# start_urls = ['https://www.zhaopin.com/']def start_requests(self):yield Request(url='https://www.zhaopin.com/')def parse(self, response, **kwargs):jobs_list = Selector(text=response.text).xpath("//a[@class='job-menu__sub__name']/text()").extract()  # 工作列表# citys_list = Selector(text=response.text).xpath(#     "//a[@class='city-nav__item__cities__a']/text()").extract()  # 工作地点print(jobs_list)# print(citys_list)for job in jobs_list:# for city in citys_list:#     url = f'http://sou.zhaopin.com/?jl={city}&kw={job}'#     yield Request(url=url, callback=self.jobs_parse)url = f'http://sou.zhaopin.com/?jl=成都&kw={job}'yield Request(url=url, callback=self.jobs_parse)def jobs_parse(self, response):doms = Selector(text=response.text).xpath("//*[@id='positionList-hook']/div/div[@class='joblist-box__item clearfix']").extract()for dom in doms:## 数据解析过程job_name = Selector(text=dom).xpath("//span[@class='iteminfo__line1__jobname__name']/@title").extract_first()job_salary = Selector(text=dom).xpath("//p[@class='iteminfo__line2__jobdesc__salary']/text()").extract_first()job_place = Selector(text=dom).xpath("//ul[@class='iteminfo__line2__jobdesc__demand']/li[1]/text()").extract_first()job_experience = Selector(text=dom).xpath("//ul[@class='iteminfo__line2__jobdesc__demand']/li[2]/text()").extract_first()job_education = Selector(text=dom).xpath("//ul[@class='iteminfo__line2__jobdesc__demand']/li[3]/text()").extract_first()job_tag = Selector(text=dom).xpath("//div[@class='iteminfo__line3__welfare']/div/text()").extract()company_name = Selector(text=dom).xpath("//span[@class='iteminfo__line1__compname__name']/@title").extract_first()company_type = Selector(text=dom).xpath("//div[@class='iteminfo__line2__compdesc']/span[1]/text()").extract_first()company_scale = Selector(text=dom).xpath("//div[@class='iteminfo__line2__compdesc']/span[2]/text()").extract_first()link = Selector(text=dom).xpath("//a[@class='joblist-box__iteminfo iteminfo']/@href").extract_first()##  数据持久化job_info = JobInfo()job_info['job_name'] = job_namejob_info['job_salary'] = job_salaryjob_info['job_place'] = job_placejob_info['job_experience'] = job_experiencejob_info['job_education'] = job_educationjob_info['job_tag'] = job_tagjob_info['company_name'] = company_namejob_info['company_type'] = company_typejob_info['company_scale'] = company_scalejob_info['link'] = link# 将数据提交yield job_info

9.数据持久化

使用peewee持久化数据,在管道进行处理.

9.1安装peewee

命令:

pip install peewee

创建一个Model.py编写代码如下

from peewee import *db = MySQLDatabase('wsx',host="192.168.0.95", ## 主机地址port=3306,  # 端口 默认3306user="root", ## 用户名password="meimima") ## 密码class DataModel(Model):class Meta:database = dbclass JobsInfo(DataModel):  #job_name = CharField(max_length="255")job_salary = CharField(max_length="255")job_place = CharField(max_length="255")job_experience = CharField(max_length="255")job_education = CharField(max_length="255")job_tag = TextField(default="")company_name = CharField(max_length="255")company_type = CharField(max_length="255")## default表示默认,verbose_name表示字段描述company_scale = CharField(max_length="255", default="", verbose_name="")link = TextField(default="", verbose_name="")db.create_tables([JobsInfo])

9.2编辑管道文件

打开piplines.py,编辑如下信息

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapterfrom test_spider.spiders.Model import JobsInfoclass TestSpiderPipeline:def __init__(self):passdef close_spider(self, spider):pass# 处理提交的itemdef process_item(self, item, spider):try:job_info = JobsInfo()job_info.job_name = item['job_name']job_info.job_salary = item['job_salary']job_info.job_place = item['job_place']job_info.job_experience = item['job_experience']job_info.job_education = item['job_education']job_info.job_tag = item['job_tag']job_info.company_name = item['company_name']job_info.company_type = item['company_type']job_info.company_scale = item['company_scale']job_info.link = item['link']job_info.save()print(f"{item['job_name']}保存成功")except (IndexError, TypeError, TimeoutError):print("保存失败")

整个项目结构,如图:

9.3最后在settings.py下启动这个管道。

大功告成!!!!

打开python控制台,输入scrapy crawl getjobsinfo启动我们的爬虫。

如果出现报错,如图:

表示mysql驱动没有安装:
命令安装:

pip install pymysql

如果出现:[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:这样的错误,如图:

修改settings.py文件,ROBOTSTXT_OBEY = False ,如图:

安装完成之后,再次执行:

就可以看到数据了:

 10.调试

有可能会遇到抓不到数据,这时候就需要调试,这里提供pycharm工具的调试方式。

10.1 创建run.py文件

在settings.py的同级目录创建一个run.py文件,内容如下:


from scrapy import cmdlinename = 'getjobsinfo'
cmd = 'scrapy crawl {0}'.format(name)
cmdline.execute(cmd.split())

如图:

然后在你需要调试的地方打赏断点,然后右键run.py文件,选择run debug,如图:

运行之后,断点就会打到这里,如图:

相关文章:

crapy 爬虫框架的使用

1.scrapy框架安装 安装前先安装python3和pycharm 社区版 执行命令安装scrapy&#xff0c; pip install scrapy 2.创建项目 执行命令&#xff1a; scrapy startproject test_spider 如图&#xff1a; 3.使用pycharm大开项目并设置pipenv虚拟机环境 虚拟环境是为了依赖隔…...

Edge SCDN 边缘安全加速有什么用?

Edge SCDN是最新推出的边缘安全加速服务&#xff0c;它是一种融合了安全防护和内容分发加速功能的网络服务技术&#xff0c;通过在网络边缘部署服务器节点&#xff0c;来优化内容的传输和用户的访问体验&#xff0c;同时保障网络安全。 抵御 DDoS 攻击&#xff1a; Edge SCDN …...

使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件

使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件 使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件1. 安装aarch64-unknown-linux-musl目标2. 安装交叉编译工具链安装musl-cross-make 3. 配置Rust编译器使用交叉编译工具链4. 编译你的Rust项目5. 运行或…...

u-boot移植、配置、编译学习笔记【刚开始就中止了】

教程视频地址 https://www.bilibili.com/video/BV1L24y187cK 【这个视频中途停更了…原因是实际中需要去改u-boot的情况比较少】 使用的u-boot的源码 视频中使用的是 u-boot-2017.03 学习到这里&#xff0c;暂停u-boot的移植、配置、编译学习&#xff0c;原因是经过与老师…...

torchaudio.load 段错误

使用 torchaudio.load 时出现崩溃&#xff0c;如图 解决&#xff1a; 安装 ffmpeg ​conda install ffmpeg -c conda-forge 尝试但没解决问题的方法包括 重装 cuda&#xff0c;重装 pytorch&#xff0c;安装 PySoundFile、SoundFile、sox。...

自定义函数库

求两点距离 double dis(double x1, double y1, double x2, double y2){return sqrt(pow(x2-x1, 2)pow(y2-y1, 2)); }判断闰年 bool isLeapYear(int year){return year%40 && year%100!0 || year%4000; }判断素数 bool isPrime(int num){if(num<2) return false;f…...

Tomcat的下载和使用,配置控制台输出中文日志

目录 1. 简介2. 下载3. 使用3.1 文件夹展示3.1.1 控制台输出乱码 3.2 访问localhost:80803.3 访问静态资源 4. 总结 1. 简介 Tomcat&#xff0c;全称为Apache Tomcat&#xff0c;是一个开源的Web应用服务器和Servlet容器&#xff0c;由Apache软件基金会的Jakarta项目开发。它实…...

STM32应用开发——BH1750光照传感器详解

STM32应用开发——BH1750光照传感器详解 目录 STM32应用开发——BH1750光照传感器详解前言1 硬件介绍1.1 BH1750简介1.2 硬件接线 2 软件编程2.1 软件原理2.1.1 IIC设备地址2.1.2 IIC读写2.1.3 BH1750指令集2.1.4 BH1750工作流程2.1.5 BH1750测量模式 2.2 测试代码2.3 运行测试…...

java jar包加密 jar-protect

介绍 java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal&#xff08;已停止维护&#xff09;设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版权。 使用说…...

NMEA/观测文件/导航电文

NMEA-0183 NMEA-0183是美国国家海洋电子协会为海用电子设备制定的标准格式。它包含了定位时间&#xff0c;纬度&#xff0c;经度&#xff0c;高度&#xff0c;定位所用的卫星数&#xff0c;DOP&#xff0c;差分状态和校正时段等很多信息。 参考&#xff1a;GPS NMEA数据包解析…...

HTTPS的工作原理深入解析

在当今互联网时代&#xff0c;网络安全已经成为了一个备受关注的话题。随着越来越多的个人隐私和商业数据被传输在网络中&#xff0c;如何确保这些数据在传输过程中的安全性成为了每个网络开发者和用户关注的核心问题之一。而HTTPS&#xff08;HyperText Transfer Protocol Sec…...

pandas.core.frame.DataFrame怎么进行对象内容的读写

在 Python 中&#xff0c;pandas.core.frame.DataFrame 是 Pandas 数据库的核心数据结构&#xff0c;可以方便地读取和操作表格数据。以下是几种常见的读取内容的方法&#xff1a; 读取特定列 通过列名获取数据。 # 假设 df 是一个 DataFrame data df["列名"] # …...

OFCA-OpenHarmony人才认证题库答案

单选题 1.[单选题] 位于后台的应用&#xff0c;启动组件需校验的权限是: A: ohos.permission.DISTRIBUTED_DATASYNC B: ohos.permission.START_ABILITIES_FROM_BACKGROUND C: ohos.permission.ABILITY_BACKGROUND_COMMUNICATION D: ohos.permission.START_INVISIBLE_ABIL…...

若依微服务如何获取用户登录信息

文章目录 1、需求提出2、应用场景3、解决思路4、注意事项5、完整代码第一步&#xff1a;后端获取当前用户信息第二步&#xff1a;前端获取当前用户信息 6、运行结果后端测试&#xff1a;前端展示&#xff1a; 总结 1、需求提出 在微服务架构中&#xff0c;获取当前用户的登录信…...

题目 2778: 判断数正负

题目 2778: 判断数正负 时间限制: 2s 内存限制: 192MB 提交: 12161 解决: 6681 题目描述 给定一个整数N&#xff0c;判断其正负。 输入格式 一个整数N(-109 < N < 109) 输出格式 如果N > 0, 输出positive&#xff1b; 如果N 0, 输出zero&#xff1b; 如果N < 0, 输…...

【Hexo】博客自动生成AI摘要

工具介绍 如何让博客支持AI摘要&#xff0c;使用TianliGPT自动生成文章的AI摘要 摘要AI-文章摘要生成工具 文章摘要是一个专业的文字摘要生成工具&#xff0c;你可以将需要提取摘要的文本内容发送给TianliGPT&#xff0c;稍等一会他就可以给你发送一个基于这段文本内容的摘要。…...

vue3-count-to实现数字动态增长效果

vue3-count-to 是一个用于 Vue 3的数字计数动画库&#xff0c;常用于在页面上实现数字的动态增长效果&#xff0c;类似于从某个起始值渐变到目标值的效果。它可以用来显示各种数字、统计数据或展示动画效果。 1 安装 vue3-count-to 首先&#xff0c;你需要安装 vue3-count-to …...

第一课【输入输出】(题解)

1.向世界问好 题目描述 编程输出以下内容: Hello World! Im a C program. 输入格式 本题无输入。 输出格式 请按照样例输出&#xff0c;注意大小写、空格、感叹号&#xff0c;句号&#xff0c;单引号都必须使用英文输入法里的符号。 样例输入/输出 输入数据 1 本题无…...

边缘AI和智能音频专家XMOS全球首家增值经销商(VAR)落地中国

强强合作——XMOS与飞腾云达成全球首家增值经销协议以用智能音频技术和产品服务全球厂商和消费者 中国深圳&#xff0c;2024年12月——全球领先的软件定义系统级芯片&#xff08;SoC&#xff09;开发商XMOS宣布&#xff1a;公司已与飞腾云科技达成增值分销协议&#xff0c;授权…...

实战 | 某院校小程序记录

视频教程在我主页简介里 目录&#xff1a; 前言&#xff1a; 渗透思路 1.绕过前端 2.信息泄露 3.爆破用户账号密码 4.信息泄露2 结束 前言&#xff1a; 遇到一个学校小程序的站点&#xff0c;只在前端登录口做了校验&#xff0c;后端没有任何校验&#xff0c;奇葩弱口令离…...

正则表达式——参考视频B站《奇乐编程学院》

智能指针 一、背景&#x1f388;1.1. 模式匹配&#x1f388;1.2. 文本替换&#x1f388;1.3. 数据验证&#x1f388;1.4. 信息提取&#x1f388;1.5. 拆分字符串&#x1f388;1.6. 高级搜索功能 二、原料2.1 参考视频2.2 验证网址 三、用法3.1 限定符3.1.1 ?3.1.2 *3.1.3 3.1.…...

【Vue + Print.js】前端打印, 自定义字体大小, 自定义样式, 封装共享样式

在前端开发中&#xff0c;打印功能是一个常见的需求&#xff0c;尤其是在生成报表、打印用户资料或者导出文档时&#xff0c;通常需要通过前端代码进行打印。Print.js 是一个非常流行的 JavaScript 库&#xff0c;它提供了简单而强大的打印功能&#xff0c;允许你灵活控制打印内…...

python模拟练习第一期

问题一 如果一个数 p 是个质数&#xff0c;同时又是整数 a的约数&#xff0c;则 p 称为 a的一个质因数。 请问 2024 有多少个质因数&#xff1f; 步骤 1: 分解 2024 首先&#xff0c;2024 是偶数&#xff0c;说明可以被 2 整除。我们从 2 开始进行除法分解&#xff1a; 202…...

Java-25 深入浅出 Spring - 实现简易Ioc-01 Servlet介绍 基本代码编写

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…...

华硕奥创软件在线安装和离线安装方法

华硕奥创软件在线安装和离线安装方法 1. 华硕奥创软件介绍2. 华硕奥创软件在线安装2.1 第一种2.2 第二种 3. 华硕奥创软件离线安装3.1 概述3.2 华硕奥创软件离线包下载方式 4. 卸载华硕奥创软件4.1 概述4.2 华硕奥创卸载软件下载与使用方式 结束语 1. 华硕奥创软件介绍 华硕奥…...

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…...

SQL Server数据库还原差异备份

适用范围&#xff1a;SQL Server 本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中还原差异数据库备份。 限制和局限 不允许在显式或隐式事务中使用 RESTORE。 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。 在…...

Python 给 Excel 写入数据的四种方法

Python 在数据处理领域应用广泛&#xff0c;其中与 Excel 文件的交互是常见需求之一。 本文将介绍四种使用 Python 给 Excel 文件写入数据的方法&#xff0c;并结合生活中的例子进行解释&#xff0c;帮助新手小白快速上手。 1. 使用 openpyxl 库 openpyxl 是一个用于读写 Exc…...

实验14 RNN的记忆能力和梯度爆炸实验

一 循环神经网络的记忆能力 1.数据集构建 创建了一个DigitSumDataset 类&#xff0c;包括初始化函数init、数据生成函数 generate_data、数据加载函数 load_data、__len__ 方法、__getitem__ 方法。 init函数&#xff1a;接受的参数是data_path&#xff08; 存放数据集的目录…...

【电子通识】电流倒灌为什么需要注意?

电流倒灌是一个很常见的问题,以“IO电流倒灌”为关键词在百度上进行搜索,可以找到很多相关案例。 电流倒灌问题在5V电平的单片机时代几乎不会发生,主要是因为5V单片的IO耐压值高,单片机内部结构对IO保护设计很好。 到了3.3V单片机时代,这类问题有一定的偶发性,但…...

Elasticsearch 集群部署

Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置&#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我…...

Windows系统VSCode 搭建ESP-IDF环境

VS Code&#xff0c;安装ESP-IDF插件 快捷键CTRLSHIFTP&#xff0c;弹出显示所有命令的窗口&#xff0c;选择ESP-IDF的欢迎 使用第一个选项&#xff0c;要选择一个ESP-IDF版本&#xff0c;选最新的就行 点击Install,等待下载 提示安装成功&#xff0c;如果过程中出现python已存…...

在centos 7.9上面安装mingw交叉编译工具

1.说明 为了在centos上面编译windows的程序&#xff0c;需要安装mingw工具&#xff0c;mingw工具是可以编译windows程序的一些工具链&#xff0c;使用方式和linux一致 2.下载脚本 使用脚本方式编译&#xff0c;github的脚本位置&#xff1a;https://github.com/Zeranoe/ming…...

【Java笔记】LinkedList 底层结构

一、LinkedList 的全面说明 LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复)&#xff0c;包括null线程不安全&#xff0c;没有实现同步 二、LinkedList 的底层操作机制 三、LinkedList的增删改查案例 public class LinkedListCRUD { public stati…...

【深入理解java中的设计模式】

深入理解java中的设计模式 设计模式是软件工程中的最佳实践&#xff0c;它们提供了解决特定问题的模板或蓝图。在Java中&#xff0c;设计模式通常被分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。 创建型模式 单例模式 (Singleton Pattern) 描述: 保证一个类…...

详解下c语言下的多维数组和指针数组

在实际c语言编程中&#xff0c;三维及以上数组我们使用的很少&#xff0c;二维数组我们使用得较多。说到数组&#xff0c;又不得关联到指针&#xff0c;因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…...

如何使用 Python 发送 HTTP 请求?

在Python中发送HTTP请求最常用的库是requests&#xff0c;它提供了简单易用的API来发送各种类型的HTTP请求。 除此之外&#xff0c;还有标准库中的http.client&#xff08;以前叫做httplib&#xff09;和urllib&#xff0c;但它们相对更底层&#xff0c;代码量较大&#xff0c…...

活动预告 |【Part2】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;基础知识”活动&#xff0c;培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动&#xff0c;扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 课…...

神经网络基础-激活函数

文章目录 1. 什么是激活函数2. sigmoid 激活函数3. tanh 激活函数4. ReLU 激活函数5. SoftMax 激活函数6. 其他常见的激活函数7. 激活函数的选择方法 1. 什么是激活函数 激活函数用于对每层的输出数据进行变换, 进而为整个网络注入了非线性因素。此时, 神经网络就可以拟合各种…...

Debedium如何忽略Oracle的purge命令

报错 截至目前3.0版本&#xff0c;Debezium的Oracle Connector并不支持purge table这个指令。 所以&#xff0c;在使用Debezium解析Oracle变更的时候&#xff0c;如果在源端执行了类似 purge table "$BIN… 的语句&#xff0c;就会导致Debezium罢工&#xff0c;日志里显…...

基于 webRTC Vue 的局域网 文件传输工具

文件传输工具&#xff0c;匿名加密&#xff0c;只需访问网页&#xff0c;即可连接到其他设备&#xff0c;基于 webRTC 和 Vue.js coturn TURN 服务器 docker pull coturn/coturn docker run -d --networkhost \-v $(pwd)/my.conf:/etc/coturn/turnserver.conf \coturn/coturn…...

opencv Canny边缘检测

canny阈值越高,检测到的边缘数量越少 # 导入OpenCV库&#xff0c;用于图像处理 import cv2 import numpy as np # 从matplotlib库中导入pyplot模块&#xff0c;用于绘制图像 from matplotlib import pyplot as plt # 创建一个名为window的窗口&#xff0c;窗口大小自…...

数仓高频面试 | 数仓为什么要分层

大家好&#xff0c;我是大D呀。 关于数仓分层&#xff0c;在面试过程中几乎是必问的。不过&#xff0c;面试官一般也不会直接考你数仓为什么要分层&#xff0c;而是在你介绍项目时&#xff0c;可能会换一种形式来穿插着问&#xff0c;比如数据链路为什么要这样设计&#xff0c…...

Coconut:探索大语言模型的连续思维链推理能力

目录 简介&#xff1a; 什么是Coconut&#xff1f; 为什么我们需要Coconut&#xff1f; Coconut如何工作&#xff1f; 实验结果怎么样&#xff1f; Coconut的优势&#xff1a; 结论&#xff1a; 简介&#xff1a; 你有没有想过&#xff0c;计算机是如何像人类一样思考问…...

2024年安徽省职业院校技能大赛水利工程BIM建模与应用

2024年安徽省职业院校技能大赛 赛 项 规 程 赛项名称&#xff1a; 水利工程BIM建模与应用 赛项组别&#xff1a; 高职组 承办单位&#xff1a; 安徽水利水电职业技术学院 目录 一、赛项名称… 1 二、竞赛目标… 1 三、竞赛内容… 2 四、竞赛方式… 3 五、竞赛流程… 4 七、技术…...

vue常用命令汇总

nvm 一个nodejs版本管理工具&#xff0c;解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 npm 可以管理 nodejs 的第三方插件。 vue-cli 是Vue提供的一个官方cli,专门为单页面应用快速搭建繁杂的脚手架。 nginx 是一个高性能的HTTP和反向代理we…...

ios上架构建版本没苹果电脑怎么上传

在app store上架的时候&#xff0c;遇到下图的问题&#xff1a; 点击蓝色加号的时候&#xff0c;并没有构建版本可以选择 从图中可以看出&#xff0c;它给我们推荐了很多上传工具&#xff0c;比如xcode、transporter或命令行工具之类的&#xff0c;但是这些工具都是只能在苹果…...

某名校考研自命题C++程序设计——近10年真题汇总(上)

本帖更新一些某校的编程真题&#xff0c;总体来说不难&#xff0c;考察的都是基本功&#xff0c;92高校大一期末的难度&#xff0c;不过有些细节颇为繁琐&#xff0c;各位还是需要一定程度上注意的~ 目录 一.分数求和 二.大小写字母转换 三.判断当年天序 四.交替合并字符串…...

【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?

在人工智能领域&#xff0c;我们一直在追求让机器像人类一样思考。然而&#xff0c;即使是最先进的AI&#xff0c;也常常被诟病缺乏“常识”&#xff0c;难以理解复杂问题&#xff0c;更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方&#xff0c;…...

️️️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践20241212

&#x1f6e1;️ 避坑指南&#xff1a;如何修复国密gmssl 库填充问题并提炼优秀加密实践 ✨ 引言 在当下的数据安全环境中&#xff0c;SM4作为中国国家密码算法的代表性选择&#xff0c;被广泛应用于金融、通信和政府领域。然而&#xff0c;在实际开发中&#xff0c;即便是开…...