【风变】Python爬虫精进复习-20240430

参考笔记

下面给出一个巨佬学习风变pyhton基础语法和爬虫精进的笔记(链接)
风变编程笔记(一)-Python基础语法
风变编程笔记(二)-Python爬虫精进

技术总结

request + BeautifulSoup
selenium + BeautifulSoup

练习0-1:文章下载

import requests
res=requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/exercise/HTTP%E5%93%8D%E5%BA%94%E7%8A%B6%E6%80%81%E7%A0%81.md')
files=res.text
print(files)
myfiles=open('myfiles.txt','w+')
myfiles.write(files)
myfiles.close()

练习0-2:图像下载

import requests
res=requests.get('https://res.pandateacher.com/2019-01-12-15-29-33.png')
pic = res.content
photo = open('ppt1.jpg','wb')
#新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。
#图片内容需要以二进制wb读写。你在学习open()函数时接触过它。
photo.write(pic) 
#获取pic的二进制内容
photo.close()

练习0-3:音频下载

import requests
rec=requests.get('https://static.pandateacher.com/Over%20The%20Rainbow.mp3')
req=rec.content
mymusic=open('mymusic1.mp3','wb')
mymusic.write(req)
mymusic.close()

练习1-1:我的书苑我做主

必做:
修改网页标题
增加至少一本书的描述
修改网页底部

选做:
修改已有书籍的描述
增加多本书的描述
自由地在HTML文档上修改任意内容

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>这个书苑不太冷5.0</title><style>a {text-decoration: none;}body {margin: 0;width:100%;height: 100%;}#header {background-color:#0c1f27;color:#20b2aa;text-align:center;padding:15px;}#nav {line-height:60px;background-color:#e0f2f0;width:80px;padding:30px;position: absolute;left: 0;top:0;bottom: 0;}#footer {background-color:#0c1f27;color:#20b2aa;clear:both;text-align:center;padding:35px;}#main {margin-left: 140px;padding-left: 150px;padding-right: 220px;overflow: scroll;}#article {display: flex;position: relative;}.catlog{font-size:20px;color:black;font-family: sans-serif;}.title {color:#20b2aa;font-size:20px;}.img {width: 185px;height: 266px;}</style></head><body><div id="header"><h1 style="font-size:50px;">这个书苑不太冷</h1></div><div id="article"><div id="nav"><a href="#type1" class="catlog">科幻小说</a><br><a href="#type2" class="catlog">人文读物</a><br><a href="#type3" class="catlog">技术参考</a><br></div><div id="main"><div class="books"><h2><a name="type1">科幻小说</a></h2><a href="https://book.douban.com/subject/27077140/" class="title">《奇点遗民》</a><p class="info">本书精选收录了刘宇昆的科幻佳作共22篇。《奇点遗民》融入了科幻艺术吸引人的几大元素:数字化生命、影像化记忆、人工智能、外星访客……刘宇昆的独特之处在于,他写的不是科幻探险或英雄奇幻,而是数据时代里每个人的生活和情感变化。透过这本书,我们看到的不仅是未来还有当下。</p> <img class="img" src="https://img3.doubanio.com/view/subject/l/public/s29492583.jpg"><br/><br/><hr size="1"></div><div class="books"><h2><a name="type2">人文读物</a></h2><a href="https://book.douban.com/subject/26943161/" class="title">《未来简史》</a><p class="info">未来,人类将面临着三大问题:生物本身就是算法,生命是不断处理数据的过程;意识与智能的分离;拥有大数据积累的外部环境将比我们自己更了解自己。如何看待这三大问题,以及如何采取应对措施,将直接影响着人类未来的发展。</p> <img class="img" src="https://img3.doubanio.com/view/subject/l/public/s29287103.jpg"><br/><br/><hr size="1"></div><div class="books"><h2><a name="type3">技术参考</a></h2><a href="https://book.douban.com/subject/25779298/" class="title">《利用Python进行数据分析》</a><p class="info">本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。由于作者Wes McKinney是pandas库的主要作者,所以本书也可以作为利用Python实现数据密集型应用的科学计算实践指南。本书适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。</p> <img class="img" src="ttps://img3.doubanio.com/view/subject/l/public/s27275372.jpg"><br/><br/><hr size="1"></div></div></div><div id="footer">Copyright © ForChange 风变科技</div></body>
</html>

第2关:这个书苑不太冷(静态网页)

目标网址:https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html
即爬取这个书苑不太冷网站中每本书的类型、名字、链接和简介的文字

# 调用requests库
import requests 
# 调用BeautifulSoup库
from bs4 import BeautifulSoup 
# 返回一个response对象,赋值给res
res =requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
# 把res解析为字符串
html=res.text
# 把网页解析为BeautifulSoup对象
soup = BeautifulSoup( html,'html.parser')
# 通过匹配属性class='books'提取出我们想要的元素
items = soup.find_all(class_='books')  
# 遍历列表items
for item in items:       # 在列表中的每个元素里,匹配标签<h2>提取出数据               kind = item.find('h2')     #  在列表中的每个元素里,匹配属性class_='title'提取出数据          title = item.find(class_='title')  # 在列表中的每个元素里,匹配属性class_='info'提取出数据   brief = item.find(class_='info')      # 打印书籍的类型、名字、链接和简介的文字print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text) 

练习2-1:博客爬虫

目标网址:https://wordpress-edu-3autumn.localprod.oc.forchange.cn/all-about-the-future_04/
在这里插入图片描述

在这里插入图片描述

import requests
from bs4 import BeautifulSoupres=requests.get('https://wordpress-edu-3autumn.localprod.oc.forchange.cn/all-about-the-future_04/')
html=res.text
soup=BeautifulSoup(html,'html.parser')
Aitems=soup.find(class_='comment-list')#用find找出大的地址
items=Aitems.find_all('article')#在大的地址中用find_all来找出小地址的列表for item in items:user1=item.find('b') #    user1=item.find(class_='fn')comment1=item.find(class_='comment-content')print('评论者',user1.text,'\n','评论',comment1.text)

练习2-2:书店寻宝

目标网址:http://books.toscrape.com/
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

import requests
from bs4 import BeautifulSoupres=requests.get('http://books.toscrape.com/')
html=res.text
soup=BeautifulSoup(html,'html.parser')
items=soup.find('ul',class_='nav nav-list').find('li').find('ul').find_all('li')'''
for item in items:fenlei=item.find('a')print((fenlei.text).strip())with open('doc3.doc','a+') as doc3:doc3.write((fenlei.text).strip())doc3.write('\n')
'''item_book=soup.find('ol',class_='row').find_all('li')
#print(item_book)for item in item_book:item_name=item.find('article',class_='product_pod').find('h3').find('a')item_price=item.find('article',class_='product_pod').find('div',class_='product_price').find('p',class_='price_color')item_rate=item.find('article',class_='product_pod').find('p')
#    print(item_rate['class'][1])
#    print(item_name['title'],'\t')
#    print(item_price.text)
#    print(item_name['title'],'\t',item_price.text)print(item_name['title'],'\t',item_price.text,'\t',item_rate['class'][1])

练习2-3:博客文章

目标网址:https://wordpress-edu-3autumn.localprod.oc.forchange.cn/
在这里插入图片描述

import requests
from bs4 import BeautifulSoupres=requests.get('https://wordpress-edu-3autumn.localprod.oc.forchange.cn/')
html=res.text
soup=BeautifulSoup(html,'html.parser')
Aitems=soup.find(id='main')#用find找出大的地址
items=Aitems.find_all('article')#在大的地址中用find_all来找出小地址的列表for item in items:item1=item.find(class_="entry-title") item2=item.find(class_='entry-date published')item3=item.find('h2').find('a')['href']print('标题',item1.text,'\n','时间',item2.text,'\n','链接',item3)

第3关:下厨房

目标网址:https://www.xiachufang.com/explore/
在这里插入图片描述

写一个循环,提取当前页面的所有菜名、URL、食材,并将它存入列表。其中每一组菜名、URL、食材是一个小列表,小列表组成一个大列表。

# 引用requests库
import requests
# 引用BeautifulSoup库
from bs4 import BeautifulSoup# 获取数据
res_foods = requests.get('http://www.xiachufang.com/explore/')
# 解析数据
bs_foods = BeautifulSoup(res_foods.text,'html.parser')
# 查找最小父级标签
list_foods = bs_foods.find_all('div',class_='info pure-u')# 创建一个空列表,用于存储信息
list_all = []for food in list_foods:# 提取第0个父级标签中的<a>标签tag_a = food.find('a')# 菜名,使用[17:-13]切掉了多余的信息name = tag_a.text[17:-13]# 获取URLURL = 'http://www.xiachufang.com'+tag_a['href']# 提取第0个父级标签中的<p>标签tag_p = food.find('p',class_='ing ellipsis')# 食材,使用[1:-1]切掉了多余的信息ingredients = tag_p.text[1:-1]# 将菜名、URL、食材,封装为列表,添加进list_alllist_all.append([name,URL,ingredients])# 打印
print(list_all)

我的做法:顺便下载图片(大同小异)

import requests
from bs4 import BeautifulSoupheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',# 标记了请求从什么设备,什么浏览器上发出}res=requests.get('https://www.xiachufang.com/explore/',headers=headers)
html=res.text
soup=BeautifulSoup(html,'html.parser')
Aitems=soup.find(class_='normal-recipe-list')#用find找出大的地址
items=Aitems.find_all('li')#在大的地址中用find_all来找出小地址的列表item_list = []for item in items:item1=item.find(class_="name") .text.replace('\n\n                ','').replace('\n            \n\n','').replace('\n','').replace('\n','')item2=item.find(class_='ing ellipsis').text.replace('\n','').replace('\n','').replace('\n','')item3=item.find('a')['href']item4=item.find('img')['data-src']item_list.append([item1,item2,'https://www.xiachufang.com/'+item3])print('菜名',item1,'\n','材料',item2,'\n','链接',item3,'图片链接',item4)res=requests.get(item4)pic = res.contentphoto = open(item1+'.jpg','wb')photo.write(pic) photo.close()
#print(item_list)

在这里插入图片描述

练习3-1:豆瓣电影爬虫

目标网址:https://movie.douban.com/top250?start=25&filter=
在这里插入图片描述

在这里插入图片描述

import requests, bs4# 为躲避反爬机制,伪装成浏览器的请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}for x in range(10):url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='res = requests.get(url, headers=headers)bs = bs4.BeautifulSoup(res.text, 'html.parser')bs = bs.find('ol', class_="grid_view")for titles in bs.find_all('li'):num = titles.find('em',class_="").text#查找序号title = titles.find('span', class_="title").text#查找电影名tes = titles.find('span',class_="inq").text#查找推荐语comment = titles.find('span',class_="rating_num").text#查找评分url_movie = titles.find('a')['href']print(num + '.' + title + '——' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie)

我的答案(差不多)

import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for i in range(0,10):url = 'https://movie.douban.com/top250?start='+ str(i*25) +'&filter='res=requests.get(url=url,headers=headers)html=res.textsoup=BeautifulSoup(html,'html.parser')Aitems=soup.find(class_='grid_view')#用find找出大的地址items=Aitems.find_all('li')#在大的地址中用find_all来找出小地址的列表item_list = []for item in items:item0=item.find('em').textitem1=item.find('span', class_="title").textitem2=item.find('a')['href']if item.find(class_='inq'): item3=item.find(class_='inq').textelse:item3=''item4=item.find(class_='rating_num').text#item_list.append([item1,item2,item3])print('序号',item0,'\n','电影名',item1,'\n','链接',item2,'\n','推荐语',item3,'\n','评分',item4)

在这里插入图片描述

练习3-1B:豆瓣电影爬虫(非风变)

目标网址:https://movie.douban.com/cinema/nowplaying/foshan/
在这里插入图片描述

import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for i in range(0,1):url = 'https://movie.douban.com/cinema/nowplaying/foshan/'res=requests.get(url=url,headers=headers)html=res.textsoup=BeautifulSoup(html,'html.parser')Aitems=soup.find('ul',class_='lists')#用find找出大的地址items=Aitems.find_all('li',class_="list-item")#在大的地址中用find_all来找出小地址的列表item_list = []for item in items:item0=item['data-title']item1=item['data-region']item2=item['data-actors']item3=item.find('li',class_="srating").text.replace('\n','')item4=item.find('a',class_="ticket-btn")['href']print('\n','电影名',item0,'\n','地区',item1,'\n','演员',item2,'\n','评分',item3,'\n','详细链接',item4)

在这里插入图片描述

练习3-2:一键下电影(风变网址已变更)

在这里插入图片描述
1.步骤一
“输名字”,学过基础课的同学一定可以想到,用input()就可以啦。

2.步骤二
”搜索结果页面“ 这里面涉及到一个坑,我们要一起填上。输入不同的电影名,观察搜索结果页面的URL:

《无名之辈》的搜索结果URL:http://s.ygdy8.com/plus/s0.php?typeid=1&keyword=%CE%DE%C3%FB%D6%AE%B1%B2
《神奇动物》的搜索结果URL:http://s.ygdy8.com/plus/s0.php?typeid=1&keyword=%C9%F1%C6%E6%B6%AF%CE%EF
《狗十三》 的搜索结果URL:http://s.ygdy8.com/plus/s0.php?typeid=1&keyword=%B9%B7%CA%AE%C8%FD

观察URL,不难发现:http://s.ygdy8.com/plus/s0.php?typeid=1&keyword= 这些都是一样的,只不过不同的电影名对应URL后面加了一些我们看不懂的字符,请阅读以下代码,注意注释哦:

a= '无名之辈'
b= a.encode('gbk')
# 将汉字,用gbk格式编码,赋值给b
print(quote(b))
# quote()函数,可以帮我们把内容转为标准的url格式,作为网址的一部分打开#%CE%DE%C3%FB%D6%AE%B1%B2

中文 - gbk - url - 拼接

3.步骤三 + 步骤四
”进入下载页面“ 与 “找到下载链接” 就是解析网页定位啦,利用find() 和 find_all(),都是你会的内容,加油呀~

练习3-2B:一键下电影(新网址–利用Selenium+BS解决)

目标网址:https://www.dygod.net/
在这里插入图片描述

import requests
from bs4 import BeautifulSoup
from urllib.parse import quote,unquote
from selenium import webdriver
import os
import time#movie_name = input('请输入电影名')
movie_name = '怦然心动'# Selenium模拟人工进入
chromedriver = r"C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe" #这里写本地的chromedriver 的所在路径
os.environ['webdriver.Chrome.driver'] = chromedriver #调用chrome浏览器
driver = webdriver.Chrome(chromedriver)
driver.maximize_window()
driver.get('https://www.dygod.net/')
time.sleep(1)item1 = driver.find_element_by_name('keyboard')
item1.send_keys(movie_name)
time.sleep(1)item2 = driver.find_element_by_name('Submit')
item2.click()
time.sleep(1)
print('Submit')# 解析新网页
page_sourse = driver.page_source
#print('page_sourse',page_sourse)
soup=BeautifulSoup(page_sourse,'html.parser')
#print('soup',soup)
Aitems=soup.find('div',class_='co_content8').find_all('table')
#print('Aitems',Aitems)for item in Aitems:item1 = item.find('a',class_="ulink").textitem2 = item.find('a',class_="ulink")['href']print('\n','电影名',item1,'\n','链接',item2)

在这里插入图片描述

第4关:寻找周杰伦(QQ音乐网页已变更,原代码失效)

目标网站:https://y.qq.com/

在这里插入图片描述

# 引用requests库   
import requests
# 调用get方法,下载这个字典
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 使用json()方法,将response对象,转为列表/字典
json_music = res_music.json()
# 一层一层地取字典,获取歌单列表
list_music = json_music['data']['song']['list']
# list_music是一个列表,music是它里面的元素
for music in list_music:# 以name为键,查找歌曲名print(music['name'])# 查找专辑名print('所属专辑:'+music['album']['name'])# 查找播放时长print('播放时长:'+str(music['interval'])+'秒')# 查找播放链接print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')

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

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

相关文章

舜山木业有限公司现已加入2024长三角快递物流供应链与技术装备展览会

参展企业介绍 绍兴舜山木业有限公司是中华人民共和国出境木质包装定点企业、浙江省林业重点龙头企业。2011年起全面导入和开发应用符合木包装企业生产特点的ERP管理系统&#xff0c;顺利通过国家三级安全生产标准化验收&#xff0c;取得欧标托盘在中国大陆区的生产商执照资格。…

九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参

目录 一、概述/目的 二、通过串口发送函数对比 2.1 stm32 hal库 VS renesas FSP 2.2 const修改函数形参的作用 2.2.1 值传递-副本 2.2.2 指针传递&#xff08;就近原则&#xff09; 2.2.2.1 const修饰&#xff1a;*P 2.2.2.2 const修饰&#xff1a;指针变量P 2.2.2.3 …

手撸XXL-JOB(二)——定时任务管理

在上一节中&#xff0c;我们介绍了SpringBoot中关于定时任务的执行方式&#xff0c;以及ScheduledExecutorService接口提供的定时任务执行方法。假设我们现在要写类似XXL-JOB这样的任务调度平台&#xff0c;那么&#xff0c;对于任务的管理&#xff0c;是尤为重要的。接下来我们…

最新Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

在Linux系统中&#xff0c;使用ImageMagick可以图片格式转换&#xff0c;其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集&#xff0c;它包含了许多用于图像转换的命令。 一、安装ImageMagick&#xff08;如果尚未安装&#xff09;&#xff1…

在线音乐系统

文章目录 在线音乐系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;带走&#xff09; 在线音乐系统 一、项目演示 音乐网站 二、项目介绍 基于springbootvue的前后端分离在线音乐系统 登录角色 : 用户、管理员 用…

Git 的原理与使用(中)

Git 的原理与使用&#xff08;上&#xff09;中介绍了Git初识&#xff0c;Git的安装与初始化以及工作区、暂存区、版本库相关的概念与操作&#xff0c;本文接着上篇的内容&#xff0c;继续深入介绍Git在的分支管理与远程操作方面的应用。 目录 五、分支管理 1.理解分支 2.创…

java约拍摄影小程序

获取源码配套资料论文等、问题解答&#xff0c;可以加华神扣扣&#xff1a;3753599439 扣扣&#xff1a;1590404240 叩叩&#xff1a;1306749621

数据结构与算法学习笔记十---链队列的表示和实现(C语言)

目录 前言 1.什么是链队 2.链队的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言 本篇博客介绍链栈队列的表示和实现。 1.什么是链队 链队是采用链式存储结构实现的队列。通常链队使用单…

【知识拓展】大白话说清楚:IP地址、子网掩码、网关、DNS等

前言 工作中常听别人说的本地网络是什么意思&#xff1f;同一网段又是什么意思&#xff1f;它俩有关系吗&#xff1f; 在工作中内经常会遇到相关的网络问题&#xff0c;涉及网络通信中一些常见的词汇&#xff0c;如IP地址、子网掩码、网关和DNS等。具体一点&#xff1a;经常会…

申请免费的必应搜索API

申请免费的必应搜索API 文章目录 申请免费的必应搜索API前言一、原理1.1 登录1.2 进入1.3 获取密钥1.4 申请VISA信用卡1.5 创建必应自定义搜索资源 二、创建成功 前言 准备条件&#xff1a; 1、outlook邮箱 2、招商银行全币种VISA信用卡【建议之前就有一张招商银行信用卡&…

【opencv】图像拼接实验

实验环境&#xff1a;anaconda、jupyter notebook 实验用到的包&#xff1a;opencv、matplotlib、numpy 注&#xff1a;opencv在3.4.2之后sift就不是免费的了 我用的是3.4.1.15版本 实验使用到的图片 一、sift函数获取特征值 读入图片 book cv2.imread(book.png, cv2.IMRE…

苹果macOS无法给App麦克风授权解决办法

好久没有在电脑上录制课程了&#xff0c;有些东西还是录下来记忆深刻&#xff0c;却意外发现MAC系统升级后无法授权给第三方的App使用摄像头和麦克风&#xff0c;而录屏软件是需要开启麦克风和摄像头才能录制屏幕上的操作和声音&#xff0c;官方提示在第三方APP若有使用摄像头和…

pyqt QComboBox下拉列表框控件

pyqt QComboBox下拉列表框控件 QComboBox效果代码 QComboBox QComboBox 是 PyQt&#xff08;中的一个控件&#xff0c;它允许用户从下拉列表中选择一个选项。这个控件在需要用户从预定义选项中进行选择时非常有用。 效果 代码 import sys from PyQt5.QtWidgets import QAppl…

vite创建的项目使用rem适配

下面以创建vue3.0 项目为例&#xff1a; npm init vitelatest “名称” 选择vue &#xff08;选择你所对应的语言&#xff09; 更具提示步骤执行 cd xxx npm i npm run dev 然后再项目中使用 rem 需要安装插件 第一步安装插件 npm i amfe-flexible npm i postcss-pxtorem 第二…

CS144 Checkpoint 4: interoperating in the world(2024)

分析网络路径和性能&#xff1a; mtr命令 mtr 输出的详细分析&#xff1a; mtr 162.105.253.58 命令用于结合 traceroute 和 ping 的功能&#xff0c;实时监测并分析从你的计算机到目标主机&#xff08;IP 地址 162.105.253.58&#xff0c;北京大学计算中心&#xff09;之间…

Nginx配置Referer防盗链

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 HTTP Referer是Hea…

PBOOTCMS|URL静态制作教程(已解答)

0、先解压源码文件&#xff0c;在覆盖静态文件&#xff0c;全部点是。 打开程序后台登录地址www.xxx.com(你的域名)/admin.php/Menu/index 打开程序后台--系统菜单--菜单新增&#xff08;清理缓存后重新登录账号&#xff09; &#xff08;选择父菜单&#xff0c;菜单名称&#…

ROS2+TurtleBot3+Cartographer+Nav2实现slam建图和导航

0 引言 入门机器人最常见的应用就是slam建图和导航&#xff0c;本文将详细介绍这一流程&#xff0c; 便于初学这快速上手。 首先对需要用到的软件包就行简单介绍。 turtlebot3: 是一个小型的&#xff0c;基于ros的移动机器人。 学习机器人的很多示例程序都是基于turtlebot3。 …

【Java基础】枚举类的方法及应用

如何实现让一个类有固定个数的对象 手动封装构造方法&#xff08;private&#xff09; → 创建静态对象 → final修饰静态对象&#xff0c;使其成为常量 class Season { //枚举类public final static Season SPRING new Season();public final static Season SUMMER new Se…

废品回收微信小程序基于FastAdmin+ThinkPHP+UniApp(源码搭建/上线/运营/售后/更新)

一款基于FastAdminThinkPHPUniApp开发的废品回收系统&#xff0c;适用废品回收站、再生资源回收公司上门回收使用的小程序。 一、FastAdmin框架特色功能及优势 模块化开发&#xff1a;控制器、模型、视图、JS一一对应&#xff0c;使用RequireJS进行插件机制&#xff0c;支持插…