【python爬虫】爬虫编程技术的解密与实战
🌈个人主页:Sarapines Programmer
🔥 系列专栏: 爬虫】网络爬虫探秘
⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。
目录
🌼实验目的
🌷实验要求
🏵️实验代码
🌿1. 爬取并下载当当网某一本书的网页内容
🌿2. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值
🌿3. 从长沙房产网爬取长沙某小区的二手房信息
🌾实验结果
🌿1. 爬取并下载当当网某一本书的网页内容
🌿2. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值
🌿3. 从长沙房产网爬取长沙某小区的二手房信息
🌺实验体会
📝总结
🌼实验目的
-
Jupyter Notebook编程工具基本用法:
- 学习掌握Jupyter Notebook编程工具的基本用法。
-
Python读取CSV文件:
- 理解并熟悉使用Python编程语言读取CSV文件的方法。
-
学习使用爬虫:
- 通过学习,熟悉爬虫技术的使用,掌握在Python环境下进行网络爬取的基本知识和技能。
🌷实验要求
-
爬取并下载当当网某一本书的网页内容: 通过编写Python代码,实现对当当网上某一本书的网页内容进行爬取,并将其保存为HTML格式,这涉及到网络爬虫技术的应用。
-
在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值: 运用自学的正则表达式技能,爬取豆瓣网上某本书的前50条短评内容,并计算这些评分的平均值,为数据分析提供基础。
-
从长沙房产网爬取长沙某小区的二手房信息: 以名都花园为例,通过网络爬虫技术从长沙房产网(长沙链家网)上获取该小区的二手房信息,并将这些信息保存到EXCEL文件中,为房产数据的整理和分析提供便利
🏵️实验代码
🌿1. 爬取并下载当当网某一本书的网页内容
import urllib.request
#做爬虫时要用到的库#定义百度函数
def dangdang_shuji(url,begin_page,end_page): #三个参数: 链接+开始页数+结束页数 for i in range(begin_page, end_page+1): #从开始页数到结束页数,因为range性质所以要想到达end_page得到达end_page+1sName = str(i).zfill(5) + '.html' #填充为.html文件名#zfill(5)表示数字前自动补0,加上字符转化的整型i一共占五位print ('正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......') #显示爬虫细节f = open(sName,'wb+') #w+以纯文本方式读写,而wb+是以二进制方式进行读写 m = urllib.request.urlopen(url+str(i)) .read() #urllib.request请求模块#urlopen实现对目标url的访问#可用参数#url: 需要打开的网址#data:Post提交的数据#timeout:设置网站的访问超时时间f.write(m) f.close()#调用部分
bdurl = str(input('请输入您在当当网上搜索的关于某本书的网页地址:'))
# 注意输入网址 https://book.dangdang.com/
begin_page = int(input(u'请输入开始的页数:\n'))
#将输入的字符串类型转化为整型
end_page = int(input(u'请输入终点的页数:\n'))
#同上
dangdang_shuji(bdurl,begin_page,end_page)
#调用函数
🌿2. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值
import requests, re, time
#获取响应时间与超时
count = 0
i = 0
sum, count_s = 0, 0
while(count < 50):#访问前50条记录if(i==0):#首页内容try:proxies = {'http': '120.236.128.201:8060','https': '120.236.128.201:8060'}headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}url = 'https://book.douban.com/subject/3674537/comments/?limit=20&status=P&sort=score'r = requests.get(url=url,headers=headers)except Exception as err:print(err)#打印输出错误信息break#其他页的内容else:start = i*20#url中start的值try:proxies = {'http': '120.236.128.201:8060','https': '120.236.128.201:8060'}headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}url='https://book.douban.com/subject/3674537/comments/?start='+str(start)+'&limit=20&status=P&sort=score'r = requests.get(url=url,headers=headers)# print('第'+str(i)+'页内容')except Exception as err:print(err)breaksoup = BeautifulSoup(r.text, 'lxml')# comments = soup.find_all('p', 'comment-content')#查找所有tag值为p,class标签为comment-content的内容comments = soup.find_all('span', class_='short')for item in comments:count = count + 1# print(count, item.string)print(count,item.get_text())#打印用户评论if count == 50:break pattern = re.compile('<span class="user-stars allstar(.*?) rating"')#以正则表达式匹配网页中的内容p = re.findall(pattern, r.text)for star in p:count_s = count_s + 1sum += int(star)time.sleep(5)# 停顿5秒再开始i += 1
if count == 50:print("\n平均分:",sum / count_s)import requests, re, time
#获取响应时间与超时
from bs4 import BeautifulSoup
#html的解析器,主要功能是解析和提取数据
def douBan():score_list=[] #用于存储得分import urllib #做爬虫时要用到的库count=0i=0while(count<50): #求50条评价记录#首页内容if(i==0):try:headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}url = 'https://movie.douban.com/subject/35437938/comments?limit=20&status=P&sort=new_score'r = requests.get(url=url,headers=headers)except Exception as err:#返回报错的原因print(err)break#非首页内容else:start = i*20#url中start的值try:headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}url='https://movie.douban.com/subject/35437938/comments?start='+str(start)+'&limit=20&status=P&sort=new_score'r = requests.get(url=url,headers=headers)# requests.get表示向服务器请求数据,服务器返回的结果是个Response对象except Exception as err:print(err)breakreq=urllib.request.Request(url,headers=headers)#Request:构造一个基本的请求。headers可以模拟浏览器,url为目的网址#urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以#模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证),#redirections (重定向), cookies (浏览器Cookies)以及其它内容response=urllib.request.urlopen(req)#urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False, context=None)。#参数解释:#url:请求网址#data:请求时传送给指定url的数据,当给出该参数时,请求方式变为POST,未给出时为GET。#timeout:设定超时时间。如果在设定时间内未获取到响应,则抛出异常。#cafile, capath分别为CA证书及其路径html=response.read().decode("utf-8")#以utf-8方式读取爬取网页的内容bs=BeautifulSoup(html,"html.parser") #beautifulSoup:提取html对象中的内容items=bs.find_all("div",class_="comment-item")findScore=re.compile('<span class="allstar(.*?) rating"')#匹配星级findName=re.compile('<img alt="(.*?)"')#正则表达式的字符串形式匹配电影名字for item in items:item=str(item)#找出对应的五十个电影的得分score=re.findall(findScore,item)[0]score=float(score)score_list.append(score)#将得分存放在score_list列表中count+=1#计数器加1,当计数器大于等于50则结束循环if(count>=50):breaki+=1#下一页time.sleep(5) # 停顿5秒print("评分表 : ",score_list)#计算平均分length=len(score_list)print("一共%d条信息"%length)sum_score=0#计算总和,然后求平均分for i in score_list:sum_score+=iavg=sum_score/lengthprint("豆瓣前50评价 总分为:",sum_score,"平均分:",avg)
#调用函数
douBan()
🌿3. 从长沙房产网爬取长沙某小区的二手房信息
import requests as requ
import requests
#获取响应时间与超时
from bs4 import BeautifulSoup
#html的解析器,主要功能是解析和提取数据
import xlwt
#xlwt将数据和样式信息写入excel表格的库def getHouseList(url):"获取房源信息:标题、链接地址、户型、面积、朝向、总价、所属区域、套内面积"house =[]headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'} #解析内容res = requests.get(url,headers=headers)soup = BeautifulSoup(res.content,'html.parser')housename_divs = soup.find_all('div',class_='title')#查找该html网页中tag值为div、class值为title的部分#指定属性查找标签for housename_div in housename_divs:housename_as=housename_div.find_all('a')#参数解释:在原网页中,div标志下有一个叫"a"的超链接。所以次数找tag值为a的元素#返回值:对象数组,对象内容为a超链接中的属性)for housename_a in housename_as:housename=[]housename.append(housename_a.get_text())#得到超链接中的文字内容,放在housename列表中housename.append(housename_a.get('href'))house.append(housename)#获取超链接中的链接,放在house列表中huseinfo_divs = soup.find_all('div',class_='houseInfo')#参数解释:获取该网页中tag值为div,class值为houseInfofor i in range(len(huseinfo_divs)):info = huseinfo_divs[i].get_text()#获取houseInfo中的标题infos = info.split('|')#原网页以|符号分割的,这里以此做分割#小区名称house[i].append(infos[0])#户型house[i].append(infos[1])#平米house[i].append(infos[2])house_prices = soup.find_all('div',class_='totalPrice')#函数作用:获取网页中tag值为div,且class值为totalPrice的内容for i in range(len(house_prices)):price = house_prices[i].get_text()#获取文字内容house[i].append(price)return house#爬取房屋详细信息:所在区域、套内面积
def houseinfo(url):#为什么要分为两个函数?因为这个网页中,输入一个url只是得到一些基本信息#而详细信息需要到从基本信息中的链接再去提取headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}res = requests.get(url,headers=headers)soup = BeautifulSoup(res.content,'html.parser')#headers、res、soup与getHouseList()函数中一致。基本上可以作为固定不变的部分msg =[]#获取房源的所在区域areainfos = soup.find_all('span',class_='info')#获取网页中tag值为span,class为info的内容(以具体网页内容为准)for areainfo in areainfos:#只需要获取第一个a标签的内容即可area = areainfo.find('a')#找到tag值为a(超链接)的内容。返回一个对象数组#具体内容为:herf、target、textif(not area):#如果area为nullcontinue#如果没有这部分信息就跳过hrefStr = area['href']#提取该房源的链接if(hrefStr.startswith('javascript')):continuemsg.append(area.get_text())#获取房源所在的地区名称break#由于只需要获取第一个a标签的内容,所以此时就可以跳出循环#根据房屋户型计算套内面积infolist = soup.find_all('div',id='infoList')#获取tag值为div,id为infolist的内容#注意网站标注的总面积与实际的套内面积是不一样的,所以需要重新计算num = []for info in infolist:cols = info.find_all('div',class_='col')#网站中包含col列的有很多,包括面积、方位、名称等等#老师的方法是遍历所有的col,#我觉得更好的方法是将包含平米的col单独提取出来,这样就无需使用tryfor i in cols:pingmi = i.get_text()#获取标题(面积,即xxx平米)try:#尝试从string中提取数字a = float(pingmi[:-2])#从开头到距离尾部2个字符,即把"平米"汉字去掉了num.append(a)except ValueError:#如果出错就跳出continuemsg.append(sum(num))#计算各户型的总面积return msgdef writeExcel(excelPath,houses):"#将爬取数据写入excel文件"#excelPath:excel文件存储的路径,houses:包含房源基本信息的列表workbook = xlwt.Workbook()#函数作用:新建一个工作簿sheet = workbook.add_sheet('git')#添加一行row0=['标题','链接地址','户型','面积','朝向','总价','所属区域','套内面积']for i in range(0,len(row0)):sheet.write(0,i,row0[i])#作为excel表列索引for i in range(0,len(houses)):house = houses[i]print(house)for j in range(0,len(house)):sheet.write(i+1,j,house[j])#数据写完一行接上一行workbook.save(excelPath)#将excel工作簿保存到指定位置#主函数
def main():data = []for i in range(1,5):print('-----分隔符',i,'-------')#i从1到4if i==1:url ='https://cs.lianjia.com/ershoufang/c3511059937033rs%E5%90%8D%E9%83%BD%E8%8A%B1%E5%9B%AD/'#此时i=1时url指向该地址else:url='https://cs.lianjia.com/ershoufang/pg'+str(i)+'c3511059937033rs%E5%90%8D%E9%83%BD%E8%8A%B1%E5%9B%AD/'#i不等于1时url执行不同位置houses =getHouseList(url)for house in houses:link = house[1]if(not link or not link.startswith('http')):#无法连接或连接协议不是http,使用continue跳出循环continuemianji = houseinfo(link)house.extend(mianji)data.extend(houses)#将数据整合到daya里统一写入excel表writeExcel('d:/cs.xls',data)if __name__ == '__main__':main()#如果模块是被直接运行的,则代码块被运行,#如果模块是被导入的,则代码块不被运行
🌾实验结果
🌿1. 爬取并下载当当网某一本书的网页内容
🌿2. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值
🌿3. 从长沙房产网爬取长沙某小区的二手房信息
🌺实验体会
-
实验学习和爬虫指令使用
- 通过实验首次接触了使用Python进行爬虫,学到了相关爬虫指令,并成功爬取了当当网和长沙二手房的信息。
- 发现在Linux系统下使用cat语法访问.csv文件,而在Windows系统下要使用type,需要注意斜线的差异。
-
对Python库的认识和意识拓展
- 在此实验中,通过社区查阅了相关资源,附上了详细注释,深化了对爬虫的理解。
- 意识到Python语言的强大之处,不论是机器学习的scikit-learn库还是爬虫的requests库,都涉及到Python,并体会到其调用封装在不同的库中。
-
爬虫问题解决和环境疑惑
- 遇到在Jupyter Notebook中出现‘int’ object is not callable的问题,通过重新创建文件解决,但对问题原因产生疑惑。
- 怀疑问题可能与装了PyTorch导致与Python两个虚拟环境冲突,但并未做实质修改,问题自行解决,留下疑惑。
📝总结
Python领域就像一片未被勘探的信息大海,引领你勇敢踏入Python数据科学的神秘领域。这是一场独特的学习冒险,从基本概念到算法实现,逐步揭示更深层次的模式分析、匹配算法和智能模式识别的奥秘。
渴望挑战Python信息领域的技术?不妨点击下方链接,一同探讨更多Python数据科学的奇迹吧。我们推出了引领趋势的💻 Python数据科学专栏:【爬虫】网络爬虫探秘,旨在深度探索Python模式匹配技术的实际应用和创新。🌐🔍
相关文章:

【python爬虫】爬虫编程技术的解密与实战
🌈个人主页:Sarapines Programmer🔥 系列专栏: 爬虫】网络爬虫探秘⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌼实验目的 …...

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法
VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…...

Python模块与包:扩展功能、提高效率的利器
文章目录 一、引言1.1 模块与包对于Python开发的重要性1.2 Python作为拥有丰富生态系统的编程语言 二、为什么学习模块与包2.1 复用代码:利用现有模块与包加速开发过程2.2 扩展功能:通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块&am…...

【每日一题】4.LeetCode——杨辉三角
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…...

蓝桥杯(Python)每日练Day5
题目 OJ1229 题目分析 题目完全符合栈的特征,后进先出。如果能够熟练使用列表的9种方法那么这道题很容易解出。 题解 a[]#存衣服 nint(input()) for i in range(n):llist(input().split())#判断每一步的操作if len(l[0])2:a.append(l[1])else:while a.pop()!l…...

SpringCloud(二)
Spring Cloud 文章目录 Spring Cloud任务三:Spring Cloud与微服务架构1.Spring Cloud课程内容介绍2.单体应用架构2.1 互联网应用架构演进2.2 单体应用架构 3.垂直应用架构4.SOA应用架构5.微服务应用架构介绍6.微服务架构核心思想及优缺点7.微服务架构的核心概念8.Sp…...

【java】常见的面试问题
目录 一、异常 1、 throw 和 throws 的区别? 2、 final、finally、finalize 有什么区别? 3、try-catch-finally 中哪个部分可以省略? 4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗&#…...

虚幻UE 插件-像素流送实现和优化
本笔记记录了像素流送插件的实现和优化过程。 UE version:5.3 文章目录 一、像素流送二、实现步骤1、开启像素流送插件2、设置参数3、打包程序4、打包后的程序进行像素流参数设置5、下载NodeJS6、下载信令服务器7、对信令服务器进行设置8、启动像素流送 三、优化1、…...

Vue2 props组件通信
一、父组件向子组件传值 1、流程图 2、父组件代码 <template><div class"app"><UserInfo:usernameusername:ageage:isSingleisSingle:carcar:hobbyhobby></UserInfo></div> </template><script> import UserInfo from .…...

重构改善既有代码的设计-学习(三):重新组织数据
1、拆分变量(Split Variable) 有些变量用于保存一段冗长代码的运算结果,以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次,就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任,它就应该被…...
群狼调研(长沙品牌忠诚度测试)|广告效果测评方法
广告效果测评方法可以根据具体的目标和需求而有所差异,以下是一些常见的广告效果测评方法: 1.品牌调研和调查:通过定量或定性的调研和调查方法,评估广告对品牌认知、品牌形象和品牌偏好的影响,包括品牌知名度、品牌关联…...

Gradle学习笔记:Gradle的使用方法
文章目录 1.初始化项目2.构建脚本语言选择3.项目命名4.项目构建过程 1.初始化项目 创建一个test空文件夹,在该文件夹下打开终端,并执行命令:gradle init. 会有一个选项让你选择项目的类型。下面是每个选项的含义和用途: basic&am…...

少儿编程 2023年12月电子学会图形化编程等级考试Scratch二级真题解析(选择题)
2023年12月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、在制作推箱子游戏时,地图是用数字形式储存在电脑里的,下图是一个推箱子地图,地图表示如下:第一行( 111111)第二行( 132231) 第三行( 126621) 第四行( ) 第五行( 152321) 第六行( 111111 ) 根…...

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台
基于JavaSpringMvcvueelement实现上海汽车博物馆平台 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 …...

Sybase PowerDesigner15安装配置
1,软件介绍 Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓…...

基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)
一、项目介绍 随着科技的不断发展和人们生活水平的提高,农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一,其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制,不仅效率低下,而…...

【数据结构】数据结构初识
前言: 数据结构是计算存储,组织数据的方式。数据结构是指相互间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 Data Structure Vi…...
java多线程测试websocket demo(使用文件流)
这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线…...

Tosei 自助网络店铺管理系统network_test.php_RCE漏洞复现
简介 Tosei 自助洗衣机是日本一家公司的产品,在 network_test.php 文件存在命令执行 漏洞复现 FOFA语法: body="tosei_login_check.php" 主要是日本 访问界面如下所示: 验证POC: /cgi-bin/network_test.php 拼接访问url: https://ip:port/cgi-bin/network_tes…...
uni-app 国际化
vue i18n v9的迁移后的$t()无法获取数组、对象 http://t.csdnimg.cn/WkCHy api:vue i18n [intlify] Not found ‘language’ key in ‘zh-Hans’ locale messages. [intlify] Fall back to translate ‘language’ key with ‘zh’ locale. [intlify] Not found ‘languag…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...