分享Python7个爬虫小案例(附源码)
本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。
1.使用正则表达式和文件操作爬取并保存“某吧”某帖子全部内容(该帖不少于5页。
本次选取的是某吧中的NBA吧中的一篇帖子,帖子标题是“克莱和哈登,谁历史地位更高”。爬取的目标是帖子里面的回复内容。
源程序和关键结果截图:
import csv
import requests
import re
import timedef main(page):url = f'https://tieba.baidu.com/p/7882177660?pn={page}'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}resp = requests.get(url,headers=headers)html = resp.text# 评论内容comments = re.findall('style="display:;"> (.*?)</div>',html)# 评论用户users = re.findall('class="p_author_name j_user_card" href=".*?" target="_blank">(.*?)</a>',html)# 评论时间comment_times = re.findall('楼</span><span class="tail-info">(.*?)</span><div',html)for u,c,t in zip(users,comments,comment_times):# 筛选数据,过滤掉异常数据if 'img' in c or 'div' in c or len(u)>50:continuecsvwriter.writerow((u,t,c))print(u,t,c)print(f'第{page}页爬取完毕')if __name__ == '__main__':with open('01.csv','a',encoding='utf-8')as f:csvwriter = csv.writer(f)csvwriter.writerow(('评论用户','评论时间','评论内容'))for page in range(1,8): # 爬取前7页的内容main(page)time.sleep(2)
2.实现多线程爬虫爬取某小说部分章节内容并以数据库存储(不少于10个章节。
本次选取的小说网址是某小说网,这里我们选取第一篇小说进行爬取
然后通过分析网页源代码分析每章小说的链接
找到链接的位置后,我们使用Xpath来进行链接和每一章标题的提取
在这里,因为涉及到多次使用requests发送请求,所以这里我们把它封装成一个函数,便于后面的使用
每一章的链接获取后,我们开始进入小说章节内容页面进行分析
通过网页分析,小说内容都在网页源代码中,属于静态数据
这里我们选用re正则表达式进行数据提取,并对最后的结果进行清洗
然后我们需要将数据保存到数据库中,这里我将爬取的数据存储到mysql数据库中,先封住一下数据库的操作
接着将爬取到是数据进行保存
最后一步就是使用多线程来提高爬虫效率,这里我们创建了5个线程的线程池
源代码及结果截图:
import requests
from lxml import etree
import re
import pymysql
from time import sleep
from concurrent.futures import ThreadPoolExecutordef get_conn():# 创建连接conn = pymysql.connect(host="127.0.0.1",user="root",password="root",db="novels",charset="utf8")# 创建游标cursor = conn.cursor()return conn, cursordef close_conn(conn, cursor):cursor.close()conn.close()def get_xpath_resp(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}resp = requests.get(url, headers=headers)tree = etree.HTML(resp.text) # 用etree解析htmlreturn tree,respdef get_chapters(url):tree,_ = get_xpath_resp(url)# 获取小说名字novel_name = tree.xpath('//*[@id="info"]/h1/text()')[0]# 获取小说数据节点dds = tree.xpath('/html/body/div[4]/dl/dd')title_list = []link_list = []for d in dds[:15]:title = d.xpath('./a/text()')[0] # 章节标题title_list.append(title)link = d.xpath('./a/@href')[0] # 章节链接chapter_url = url +link # 构造完整链接link_list.append(chapter_url)return title_list,link_list,novel_namedef get_content(novel_name,title,url):try:cursor = Noneconn = Noneconn, cursor = get_conn()# 插入数据的sqlsql = 'INSERT INTO novel(novel_name,chapter_name,content) VALUES(%s,%s,%s)'tree,resp = get_xpath_resp(url)# 获取内容content = re.findall('<div id="content">(.*?)</div>',resp.text)[0]# 对内容进行清洗content = content.replace('<br />','\n').replace(' ',' ').replace('全本小说网 www.qb5.tw,最快更新<a href="https://www.qb5.tw/book_116659/">宇宙职业选手</a>最新章节!<br><br>','')print(title,content)cursor.execute(sql,[novel_name,title,content]) # 插入数据conn.commit() # 提交事务保存数据except:passfinally:sleep(2)close_conn(conn, cursor) # 关闭数据库if __name__ == '__main__':# 获取小说名字,标题链接,章节名称title_list, link_list, novel_name = get_chapters('https://www.qb5.tw/book_116659/')with ThreadPoolExecutor(5) as t: # 创建5个线程for title,link in zip(title_list,link_list):t.submit(get_content, novel_name,title,link) # 启动线程
3. 分别使用XPath和Beautiful Soup4两种方式爬取并保存非异步加载的“某瓣某排行榜”如https://movie.douban.com/top250的名称、描述、评分和评价人数等数据。
先分析:
首先,来到某瓣Top250页面,首先使用Xpath版本的来抓取数据,先分析下电影列表页的数据结构,发下都在网页源代码中,属于静态数据
接着我们找到数据的规律,使用xpath提取每一个电影的链接及电影名
然后根据链接进入到其详情页
分析详情页的数据,发现也是静态数据,继续使用xpath提取数据
最后我们将爬取的数据进行存储,这里用csv文件进行存储
接着是Beautiful Soup4版的,在这里,我们直接在电影列表页使用bs4中的etree进行数据提取
最后,同样使用csv文件进行数据存储
源代码即结果截图:
XPath版:
import re
from time import sleep
import requests
from lxml import etree
import random
import csvdef main(page,f):url = f'https://movie.douban.com/top250?start={page*25}&filter='headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36',}resp = requests.get(url,headers=headers)tree = etree.HTML(resp.text)# 获取详情页的链接列表href_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[1]/a/@href')# 获取电影名称列表name_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')for url,name in zip(href_list,name_list):f.flush() # 刷新文件try:get_info(url,name) # 获取详情页的信息except:passsleep(1 + random.random()) # 休息print(f'第{i+1}页爬取完毕')def get_info(url,name):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36','Host': 'movie.douban.com',}resp = requests.get(url,headers=headers)html = resp.texttree = etree.HTML(html)# 导演dir = tree.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0]# 电影类型type_ = re.findall(r'property="v:genre">(.*?)</span>',html)type_ = '/'.join(type_)# 国家country = re.findall(r'地区:</span> (.*?)<br',html)[0]# 上映时间time = tree.xpath('//*[@id="content"]/h1/span[2]/text()')[0]time = time[1:5]# 评分rate = tree.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')[0]# 评论人数people = tree.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/div/div[2]/a/span/text()')[0]print(name,dir,type_,country,time,rate,people) # 打印结果csvwriter.writerow((name,dir,type_,country,time,rate,people)) # 保存到文件中if __name__ == '__main__':# 创建文件用于保存数据with open('03-movie-xpath.csv','a',encoding='utf-8',newline='')as f:csvwriter = csv.writer(f)# 写入表头标题csvwriter.writerow(('电影名称','导演','电影类型','国家','上映年份','评分','评论人数'))for i in range(10): # 爬取10页main(i,f) # 调用主函数sleep(3 + random.random())
Beautiful Soup4版:
import random
import urllib.request
from bs4 import BeautifulSoup
import codecs
from time import sleepdef main(url, headers):# 发送请求page = urllib.request.Request(url, headers=headers)page = urllib.request.urlopen(page)contents = page.read()# 用BeautifulSoup解析网页soup = BeautifulSoup(contents, "html.parser")infofile.write("")print('爬取豆瓣电影250: \n')for tag in soup.find_all(attrs={"class": "item"}):# 爬取序号num = tag.find('em').get_text()print(num)infofile.write(num + "\r\n")# 电影名称name = tag.find_all(attrs={"class": "title"})zwname = name[0].get_text()print('[中文名称]', zwname)infofile.write("[中文名称]" + zwname + "\r\n")# 网页链接url_movie = tag.find(attrs={"class": "hd"}).aurls = url_movie.attrs['href']print('[网页链接]', urls)infofile.write("[网页链接]" + urls + "\r\n")# 爬取评分和评论数info = tag.find(attrs={"class": "star"}).get_text()info = info.replace('\n', ' ')info = info.lstrip()print('[评分评论]', info)# 获取评语info = tag.find(attrs={"class": "inq"})if (info): # 避免没有影评调用get_text()报错content = info.get_text()print('[影评]', content)infofile.write(u"[影评]" + content + "\r\n")print('')if __name__ == '__main__':# 存储文件infofile = codecs.open("03-movie-bs4.txt", 'a', 'utf-8')# 消息头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}# 翻页i = 0while i < 10:print('页码', (i + 1))num = i * 25 # 每次显示25部 URL序号按25增加url = 'https://movie.douban.com/top250?start=' + str(num) + '&filter='main(url, headers)sleep(5 + random.random())infofile.write("\r\n\r\n")i = i + 1infofile.close()
4.实现某东商城某商品评论数据的爬取(评论数据不少于100条,包括评论内容、时间和评分)。
先分析:
本次选取的某东官网的一款联想笔记本电脑,数据为动态加载的,通过开发者工具抓包分析即可。
源代码及结果截图:
import requests
import csv
from time import sleep
import randomdef main(page,f):url = 'https://club.jd.com/comment/productPageComments.action'params = {'productId': 100011483893,'score': 0,'sortType': 5,'page': page,'pageSize': 10,'isShadowSku': 0,'fold': 1}headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36','referer': 'https://item.jd.com/'}resp = requests.get(url,params=params,headers=headers).json()comments = resp['comments']for comment in comments:content = comment['content']content = content.replace('\n','')comment_time = comment['creationTime']score = comment['score']print(score,comment_time,content)csvwriter.writerow((score,comment_time,content))print(f'第{page+1}页爬取完毕')if __name__ == '__main__':with open('04.csv','a',encoding='utf-8',newline='')as f:csvwriter = csv.writer(f)csvwriter.writerow(('评分','评论时间','评论内容'))for page in range(15):main(page,f)sleep(5+random.random())
5. 实现多种方法模拟登录某乎,并爬取与一个与江汉大学有关问题和答案。
首先使用selenium打开某乎登录页面,接着使用手机进行二维码扫描登录
进入页面后,打开开发者工具,找到元素,,定位输入框,输入汉江大学,然后点击搜索按钮
以第二条帖子为例,进行元素分析 。
源代码及结果截图:
from time import sleep
from selenium.webdriver.chrome.service import Service
from selenium.webdriver import Chrome,ChromeOptions
from selenium.webdriver.common.by import By
import warningsdef main():#忽略警告warnings.filterwarnings("ignore")# 创建一个驱动service = Service('chromedriver.exe')options = ChromeOptions()# 伪造浏览器options.add_experimental_option('excludeSwitches', ['enable-automation','enable-logging'])options.add_experimental_option('useAutomationExtension', False)# 创建一个浏览器driver = Chrome(service=service,options=options)# 绕过检测driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => false})"""})# 打开知乎登录页面driver.get('https://www.zhihu.com/')sleep(30)# 点击搜索框driver.find_element(By.ID,'Popover1-toggle').click()# 输入内容driver.find_element(By.ID,'Popover1-toggle').send_keys('汉江大学')sleep(2)# 点击搜索图标driver.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/header/div[2]/div[1]/div/form/div/div/label/button').click()# 等待页面加载完driver.implicitly_wait(20)# 获取标题title = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/h2/div/a/span').text# 点击阅读全文driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span/div/button').click()sleep(2)# 获取帖子内容content = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span[1]/div/span/p').text# 点击评论driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/div[3]/div/div/button[1]').click()sleep(2)# 点击获取更多评论driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div[2]/div/div/div[2]/div[2]/div/div[3]/button').click()sleep(2)# 获取评论数据的节点divs = driver.find_elements(By.XPATH,'/html/body/div[6]/div/div/div[2]/div/div/div/div[2]/div[3]/div')try:for div in divs:# 评论内容comment = div.find_element(By.XPATH,'./div/div/div[2]').textf.write(comment) # 写入文件f.write('\n')print(comment)except:driver.close()if __name__ == '__main__':# 创建文件存储数据with open('05.txt','a',encoding='utf-8')as f:main()
6. 综合利用所学知识,爬取某个某博用户前5页的微博内容。
这里我们选取了人民日报的微博内容进行爬取,具体页面我就不放这了,怕违规。
源代码及结果截图:
import requests
import csv
from time import sleep
import randomdef main(page):url = f'https://weibo.com/ajax/statuses/mymblog?uid=2803301701&page={page}&feature=0&since_id=4824543023860882kp{page}'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36','cookie':'SINAGLOBAL=6330339198688.262.1661412257300; ULV=1661412257303:1:1:1:6330339198688.262.1661412257300:; PC_TOKEN=8b935a3a6e; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWoQDW1G.Vsux_WIbm9NsCq5JpX5KMhUgL.FoMNShMN1K5ESKq2dJLoIpjLxKnL1h.LB.-LxKqLBoBLB.-LxKqLBKeLB--t; ALF=1697345086; SSOLoginState=1665809086; SCF=Auy-TaGDNaCT06C4RU3M3kQ0-QgmTXuo9D79pM7HVAjce1K3W92R1-fHAP3gXR6orrHK_FSwDsodoGTj7nX_1Hw.; SUB=_2A25OTkruDeRhGeFJ71UW-S7OzjqIHXVtOjsmrDV8PUNbmtANLVKmkW9Nf9yGtaKedmyOsDKGh84ivtfHMGwvRNtZ; XSRF-TOKEN=LK4bhZJ7sEohF6dtSwhZnTS4; WBPSESS=PfYjpkhjwcpEXrS7xtxJwmpyQoHWuGAMhQkKHvr_seQNjwPPx0HJgSgqWTZiNRgDxypgeqzSMsbVyaDvo7ng6uTdC9Brt07zYoh6wXXhQjMtzAXot-tZzLRlW_69Am82CXWOFfcvM4AzsWlAI-6ZNA=='}resp = requests.get(url,headers=headers)data_list = resp.json()['data']['list']for item in data_list:created_time = item['created_at'] # 发布时间author = item['user']['screen_name'] # 作者title = item['text_raw'] # 帖子标题reposts_count = item['reposts_count'] # 转发数comments_count = item['comments_count'] # 评论数attitudes_count = item['attitudes_count'] # 点赞数csvwriter.writerow((created_time,author,title,reposts_count,comments_count,attitudes_count))print(created_time,author,title,reposts_count,comments_count,attitudes_count)print(f'第{page}页爬取完毕')if __name__ == '__main__':# 创建保存数据的csv文件with open('06-2.csv','a',encoding='utf-8',newline='')as f:csvwriter = csv.writer(f)# 添加文件表头csvwriter.writerow(('发布时间','发布作者','帖子标题','转发数','评论数','点赞数'))for page in range(1,6): # 爬取前5页数据main(page)sleep(5+random.random())
7.自选一个热点或者你感兴趣的主题,爬取数据并进行简要数据分析(例如,通过爬取电影的名称、类型、总票房等数据统计分析不同类型电影的平均票房,十年间每年票房冠军的票房走势等;通过爬取中国各省份地区人口数量,统计分析我国人口分布等)。
本次选取的网址是艺恩娱数,目标是爬取里面的票房榜数据,通过开发者工具抓包分析找到数据接口,然后开始编写代码进行数据抓取。
源代码及结果截图:
import requests
import csv
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False #解决符号无法显示def main():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',}data = {'r': '0.9936776079863086','top': '50','type': '0',}resp = requests.post('https://ys.endata.cn/enlib-api/api/home/getrank_mainland.do', headers=headers, data=data)data_list = resp.json()['data']['table0']for item in data_list:rank = item['Irank'] # 排名MovieName = item['MovieName'] # 电影名称ReleaseTime = item['ReleaseTime'] # 上映时间TotalPrice = item['BoxOffice'] # 总票房(万)AvgPrice = item['AvgBoxOffice'] # 平均票价AvgAudienceCount = item['AvgAudienceCount'] # 平均场次# 写入csv文件csvwriter.writerow((rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount))print(rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount)def data_analyze():# 读取数据data = pd.read_csv('07.csv')# 从上映时间中提取出年份data['年份'] = data['上映时间'].apply(lambda x: x.split('-')[0])# 各年度上榜电影总票房占比df1 = data.groupby('年份')['总票房(万)'].sum()plt.figure(figsize=(6, 6))plt.pie(df1, labels=df1.index.to_list(), autopct='%1.2f%%')plt.title('各年度上榜电影总票房占比')plt.show()# 各个年份总票房趋势df1 = data.groupby('年份')['总票房(万)'].sum()plt.figure(figsize=(6, 6))plt.plot(df1.index.to_list(), df1.values.tolist())plt.title('各年度上榜电影总票房趋势')plt.show()# 平均票价最贵的前十名电影print(data.sort_values(by='平均票价', ascending=False)[['年份', '电影名称', '平均票价']].head(10))# 平均场次最高的前十名电影print(data.sort_values(by='平均场次', ascending=False)[['年份', '电影名称', '平均场次']].head(10))if __name__ == '__main__':# 创建保存数据的csv文件with open('07.csv', 'w', encoding='utf-8',newline='') as f:csvwriter = csv.writer(f)# 添加文件表头csvwriter.writerow(('排名', '电影名称', '上映时间', '总票房(万)', '平均票价', '平均场次'))main()# 数据分析data_analyze()
从年度上榜电影票房占比来看,2019年占比最高,说明2019年这一年的电影质量都很不错,上榜电影多而且票房高。
从趋势来看,从2016年到2019年,上榜电影总票房一直在增长,到2019年达到顶峰,说明这一年电影是非常的火爆,但是从2020年急剧下滑,最大的原因应该是这一年年初开始爆发疫情,导致贺岁档未初期上映,而且由于疫情影响,电影院一直处于关闭状态,所以这一年票房惨淡。
好了,本次案例分享到此结束,希望对刚入手爬虫的小伙伴有所帮助。
相关文章:
分享Python7个爬虫小案例(附源码)
本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。 1.使用正则表达式和文件操作爬取并保存“某吧”某帖子…...
我用ChatGPT写2023高考语文作文(一):全国甲卷
2023年 全国甲卷 适用地区:广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间,但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考?请写一篇文章。 要求:选准角度,确定立意,明确文体&am…...
c++ modbusTCP
//Modbus TCP是一种基于TCP/IP协议的Modbus协议,它允许Modbus协议通过以太网进行通信。 //在C中,可以使用第三方库来实现Modbus TCP通信,例如libmodbus和QModbus。 //使用libmodbus库实现Modbus TCP通信的示例代码如下: //c #incl…...
linux(信号结尾)
目录: 1.可重入函数 2.volatile关键字 3.SIGCHLD信号 -------------------------------------------------------------------------------------------------------------------------------- 1.可重入函数----------用来描述一个函数的特点的 1.在单进程当中也存…...
【漏洞修复】node-exporter被检测出来pprof调试信息泄露漏洞
node-exporter被检测出来pprof调试信息泄露漏洞 说在前面解决方法结语 说在前面 惯例开篇吐槽,有些二五仔习惯搞点自研的安全扫描工具,然后加点DIY元素,他也不管扫的准不准,就要给你报个高中危的漏洞,然后就要去修复&…...
在linux 上安装 NFS服务器软件
在 Ubuntu Linux 中创建 NFS 文件系统通常需要完成以下步骤: 安装 NFS 服务器软件。您可以在终端上使用以下命令来安装所需的软件包。sudo apt-get update sudo apt-get install nfs-kernel-server创建要共享的目录。例如,您可以创建一个名为 /var/nfs/shared 的目录。sudo m…...
网卡中的Ring buffer -- 解决 rx_resource_errors 丢包
1、软硬件环境 硬件: 飞腾E2000Q 平台 软件: linux 4.19.246 2、问题现象 网卡在高速收包的过程中,出现 rx error , 细查是 rx_resource_errors 如下: rootE2000-Ubuntu:~# ifconfig eth1 eth1: flags4163<UP,BROADCAST,RU…...
六月九号补题日记:Codeforces Round 877 (Div. 2)
专注是不够的,很重要的一方面在于细节,关注细节:精细和专注才是成功的重点!!! A 题意:给你一堆数字,说这一堆数字是由最初的两个数字相减得到的,让你求出两个数字其中一…...
python基础选择题,高中适用
1. 下面哪个是 Python 的注释符号? A. // B. # C. /* D. ; 答案:B 2. 下面哪个是 Python 的赋值运算符? A. B. C. ! D. > 答案:A 3. 下面哪个是 Python 的逻辑运算符? A. && B. || C. ! D. & 答…...
Linux 面试题-(腾讯,百度,美团,滴滴)
Linux 面试题-(腾讯,百度,美团,滴滴) 分析日志t.log(访问量),将各个ip 地址截取,并统计出现次数,并按从大到小排序(腾讯) http://192.168.200.10/index1.html http://192.168.200.10/index2.html http://192.168.200.20/index1.html http://192.168.20…...
DDD--战略设计步骤
在领域驱动设计(Domain-Driven Design,DDD)中,战略设计是指在系统的整体层面上考虑领域模型的组织和架构。下面是一些战略设计的详细步骤: 确定限界上下文(Bounded Context):首先&a…...
Web Scoket简述
Web Socket 简介 初次接触 Web Socket 的人,我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 因为 HTTP 协议有一个缺陷:通信只能由客户端发起。http基于请求响应实现。 (准确来说HTTP…...
“Docker 技术在企业中的应用及挑战解决方案“
Docker 技术是一种基于容器化的应用部署和管理技术。随着云计算的普及和应用的不断增多,Docker 技术在企业中的应用越来越广泛。本文将介绍 Docker 技术的基本概念、优势和应用场景,并讨论如何在企业中应用 Docker 技术。 一、Docker 技术概述 Docker …...
vue中开发包、生产包、全局包的区别以及安装语法
目录 开发包 (devDependencies) 安装方法 生产包 (dependencies) 安装方法 全局包 (Global build) 安装方法 vue中有三种不同类型的包:开发包 (Development build),生产包 (Production build) 和全局包 (Global build)。下面我们分别解释它们的区别…...
list的模拟实现
前言 list是STL中重要的容器,了解它的原理对于我们掌握它是有很多的帮助的,一般list和vector都是一起来使用的,因为它们的优缺点不同,刚好可以互补。list的优点是任意位置的插入和删除都很快,它的缺点是不支持随机访问…...
ChatGLM简介和SSE聊天接口测试效果
开发公司 智谱AI是由清华大学计算机系技术成果转化而来的公司,致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型GLM-130B,并构建了高精度通用知识图谱,形成数据与知识双轮驱动的认知引擎,基于此模型…...
darknet yolo标注、训练详细说明
文章目录 1、标注数据1.1、标注1.2、生成训练列表文件train.txt1.3、转换数据标注格式 2、训练数据整理2.1、修改train.txt路径2.2、修改yolov3.cfg2.3、obj.name和obj.data2.4、训练脚本文件trian.sh2.5、测试脚本文件test.sh 3、训练 本文对应的脚本文件和程序下载链接 darke…...
chatgpt赋能python:Python如何产生随机整数?
Python如何产生随机整数? Python是一种高级编程语言。它允许程序员轻松地创建各种类型的应用程序,包括生成随机整数。本文将介绍如何在Python中使用内置的随机数函数来生成随机整数。 random模块 Python中的random模块提供了生成随机数的函数。这些函…...
大话Stable-Diffusion-Webui-客制化主题(四)
文章目录 目标效果开始重要说明单选框以及复选框图标样式更改gradio主题构建器上传主题方式代码上传主题方式目标 在DIY的主题中更改gradio单选框组件以及复选框组件的勾选后图标样式 效果 开始 笔者在使用gradio的主题构建器的过程中发现,gradio的复选框以及单选框组件勾选…...
Excel函数VLOOKUP常用方法
一、基础用法 1、精确匹配 公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式) 定义好要输出表的表头和第一列,第一列即为要查找和匹配的父内容,在第二列输入公式,被查找表中一定也要将待查…...
systemV的工作原理+原理代码
概念 我们知道进程间的通信有管道的方式进程通信管道制作_云的小站的博客-CSDN博客 但是我们的管道通信其实属于一种取巧的方式,利用了打开的文件可读写的特性上,两个进程对此分别进行读写操作就会产生所谓的通信现象,但是外面的管道依旧得…...
Kubeflow--TFJob实现机制学习
2023暑期学习 TF Job实际场景应用Vertex AI TF Job 链接 https://www.kubeflow.org/docs/components/training/tftraining/ https://developer.aliyun.com/article/601779 TFJob实际上遵循Kubernetes标准的API定义. TFJob 对象 apiVersion --> string --> api版本&…...
百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
摘要 尽管mRNA疫苗已用于COVID-19的预防,但仍然面临不稳定和易降解的风险,这是mRNA疫苗存储、配送、效价等面临的重要障碍。先前的研究已表明,增加二级结构可延长mRNA的半衰期,再加上选择优化的密码子,可改善蛋白表达。…...
CKA 01_docker部署Kubernetes 部署docker 使用kubeadm引导集群 安装Pod网络
文章目录 1. 虚拟机步骤2. Docker 部署 Kubernetes2.1 部署 docker2.1.1 环境要求2.1.2 安装 docker 引擎2.1.3 worker 节点对 master 节点免密2.1.4 设定 docker 开机自启2.1.5 打开桥接,查看桥接流量2.1.6 设定 systemd 方式管理 cgroup2.1.7 docker部署完成2.1.8…...
Redis的使用规范小建议
Redis 核心技术与实战 笔记 作者: 蒋德钧 毕竟,高性能和节省内存,是我们的两个目标,只有规范地使用Redis,才能真正实现这两个目标。如果说之前的内容教会了你怎么用,那么今天的内容,就是帮助你用…...
操作受限的线性表——栈
本文主要内容:本文主要讲解栈的基本概念、基本操作和栈的顺序、链式实现。 目录 栈一、栈的基本概念1、基本概念2、基本操作 二、栈的顺序存储结构1、顺序栈的实现2、顺序栈的基本运算1)初始化2)判栈空3)进栈4)出栈5&a…...
C++基类指针或引用指向或引用派生类对象(实现动态多态四种手段)父类指针访问子类成员变量(需要dynamic_cast)
文章目录 背景多态示例:父类指针指向子类对象父类指针指向子类对象,如何通过父类指针访问到子类特定的成员变量实现动态多态的四种手段:基类的指针或引用指向或引用一个派生类对象(new或不new) 背景 比如有父类Animal…...
WTM框架运行报错0308010C:digital envelope routines::unsupported
WTM框架运行报错0308010C:digital envelope routines::unsupported 错误描述报错原因解决方式 错误描述 我所使用WTM搭建的程序是选择的.net5.0Vue前后端分离的方式,项目结构选择的是“各层分离的多个项目”;本人并非初次使用WTM平台框架搭建项目&#…...
(二)CSharp-索引器
1、索引器定义 什么是索引器 索引器(indexer)是这样一种成员:它使对象能够用与数组相同的方式(即使用下标)进行索引 索引器的声明参见 C# 语言定义文档注意:没有静态索引器 索引器是一组 get 和 set 访问…...
配合AI刷leetcode 实现1170
题目如下: 1170. 比较字符串最小字母出现频次 难度中等 75 定义一个函数 f(s),统计 s 中(按字典序比较)最小字母的出现频次 ,其中 s 是一个非空字符串。 例如,若 s "dcce",那么…...
博彩网站做维护/免费推广引流怎么做
北京户口越来越难搞了,逐步看下非北京户口带来的限制~ 关于养老保险,非北京户口在北京缴纳养老保险,退休后在哪里领取养老金的问题: (1)最后参保地是北京,且在北京缴纳养老保险超过15年&#x…...
网站开发还是做数据库开发/接单平台app
介绍通常情况下,在主机和VNX存储系统物理连接正常后,新安装的主机都要到存储系统上完成注册。注册过程中会将主机IP地址、主机名称和操作系统信息发送到存储系统,以方便存储系统对主机的日后管理。目前有三种常见主机注册方法:手动…...
网站开发单位/武汉seo人才
数据类型及长度 char 字符型,占用一个字节 int 整型,通常代表特定机器中整数的自然长度 short 16位 int 16位或32位 long 32位 各编译器可根据硬件特性自主选择合适的类型长度,但要遵循下列限制…...
做蛋糕网站的 实训报告图/营销推广的工具有哪些
memcached安装存档日期:2019年5月15日 | 首次出版:2009年9月15日 在由两部分组成的关于Memcached和Grails的上半部分的前半部分中,作者James Goodwill向您介绍了开源缓存解决方案memcached。 本文涵盖的主题包括安装,配置&#x…...
wordpress制作游戏/新闻投稿
引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之…...
做电商网站用什么技术/百度广告代运营
高级选择器分为:后代选择器、子代选择器、并集选择器、交集选择器 后代选择器 使用空格表示后代选择器。顾名思义,父元素的后代(包括儿子,孙子,重孙子) 1 .container p{ 2 color: red; 3 } 4 .…...