大三上实训内容

项目一:爬取天气预报数据

【内容】
在中国天气网(http://www.weather.com.cn)中输入城市的名称,例如输入信阳,进入http://www.weather.com.cn/weather1d/101180601.shtml#input
的网页显示信阳的天气预报,其中101180601是信阳的代码,每个城市或者地区都有一个代码。如下图所示,请爬取河南所有城市15天的天气预报数据。
1到7天代码
import requests
from bs4 import BeautifulSoup
import csvheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36','Accept-Encoding': 'gzip, deflate'
}
city_list = [101180101,101180901,101180801,101180301,101180501,101181101,101180201,101181201,101181501,101180701,101180601,101181401,101181001,101180401,101181701,101181601,101181301]
city_name_dict = {101180101: "郑州市",101180901: "洛阳市",101180801: "开封市",101180301: "新乡市",101180501: "平顶山市",101181101: "焦作市",101180201: "安阳市",101181201: "鹤壁市",101181501: "漯河市",101180701: "南阳市",101180601: "信阳市",101181401: "周口市",101181001: "商丘市",101180401: "许昌市",101181701: "三门峡市",101181601: "驻马店市",101181301: "濮阳"
}# 创建csv文件
with open('河南地级市7天天气情况.csv', 'w', newline='', encoding='utf-8') as csvfile:csv_writer = csv.writer(csvfile)# 写入表头csv_writer.writerow(['City ID', 'City Name', 'Weather Info'])for city in city_list:city_id = citycity_name = city_name_dict.get(city_id, "未知城市")print(f"City ID: {city_id}, City Name: {city_name}")url = f'http://www.weather.com.cn/weather/{city}.shtml'response = requests.get(headers=headers, url=url)soup = BeautifulSoup(response.content.decode('utf-8'), 'html.parser')# 找到v<div id="7d" class="c7d">标签v_div = soup.find('div', {'id': '7d'})# 提取v<div id="7d" class="c7d">下的天气相关的网页信息weather_info = v_div.find('ul', {'class': 't clearfix'})# 提取li标签下的内容,每个标签下的分行打印,移除打印结果之间的空格weather_list = []for li in weather_info.find_all('li'):weather_list.append(li.text.strip().replace('\n', ''))# 将城市ID、城市名称和天气信息写入csv文件csv_writer.writerow([city_id, city_name, ', '.join(weather_list)])
8到15天的代码
import requests
from bs4 import BeautifulSoup
import csvheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36','Accept-Encoding': 'gzip, deflate'
}
city_list = [101180101, 101180901, 101180801, 101180301, 101180501, 101181101, 101180201, 101181201, 101181501,101180701, 101180601, 101181401, 101181001, 101180401, 101181701, 101181601, 101181301]
city_name_dict = {101180101: "郑州市",101180901: "洛阳市",101180801: "开封市",101180301: "新乡市",101180501: "平顶山市",101181101: "焦作市",101180201: "安阳市",101181201: "鹤壁市",101181501: "漯河市",101180701: "南阳市",101180601: "信阳市",101181401: "周口市",101181001: "商丘市",101180401: "许昌市",101181701: "三门峡市",101181601: "驻马店市",101181301: "濮阳"
}
# 创建csv文件
with open('河南地级市8-15天天气情况.csv', 'w', newline='', encoding='utf-8') as csvfile:csv_writer = csv.writer(csvfile)# 写入表头csv_writer.writerow(['City ID', 'City Name', 'Weather Info'])for city in city_list:city_id = citycity_name = city_name_dict.get(city_id, "未知城市")print(f"City ID: {city_id}, City Name: {city_name}")url = f'http://www.weather.com.cn/weather15d/{city}.shtml'response = requests.get(headers=headers, url=url)soup = BeautifulSoup(response.content.decode('utf-8'), 'html.parser')# 找到v<div id="15d" class="c15d">标签v_div = soup.find('div', {'id': '15d'})# 提取v<div id="15d" class="c15d">下的天气相关的网页信息weather_info = v_div.find('ul', {'class': 't clearfix'})# 提取li标签下的信息for li in weather_info.find_all('li'):time = li.find('span', {'class': 'time'}).textwea = li.find('span', {'class': 'wea'}).texttem = li.find('span', {'class': 'tem'}).textwind = li.find('span', {'class': 'wind'}).textwind1 = li.find('span', {'class': 'wind1'}).textcsv_writer.writerow([city_id, city_name, f"时间:{time},天气:{wea},温度:{tem},风向:{wind},风力:{wind1}"])
15天代码
import requests
from bs4 import BeautifulSoup
import csvheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36','Accept-Encoding': 'gzip, deflate'
}
city_list = [101180101, 101180901, 101180801, 101180301, 101180501, 101181101, 101180201, 101181201, 101181501,101180701, 101180601, 101181401, 101181001, 101180401, 101181701, 101181601, 101181301]
city_name_dict = {101180101: "郑州市",101180901: "洛阳市",101180801: "开封市",101180301: "新乡市",101180501: "平顶山市",101181101: "焦作市",101180201: "安阳市",101181201: "鹤壁市",101181501: "漯河市",101180701: "南阳市",101180601: "信阳市",101181401: "周口市",101181001: "商丘市",101180401: "许昌市",101181701: "三门峡市",101181601: "驻马店市",101181301: "濮阳"
}# 创建csv文件
with open('河南地级市1-15天天气情况.csv', 'w', newline='', encoding='utf-8') as csvfile:csv_writer = csv.writer(csvfile)# 写入表头csv_writer.writerow(['City ID', 'City Name', 'Weather Info'])for city in city_list:city_id = citycity_name = city_name_dict.get(city_id, "未知城市")print(f"City ID: {city_id}, City Name: {city_name}")# 爬取1-7天天气情况url_7d = f'http://www.weather.com.cn/weather/{city}.shtml'response_7d = requests.get(headers=headers, url=url_7d)soup_7d = BeautifulSoup(response_7d.content.decode('utf-8'), 'html.parser')v_div_7d = soup_7d.find('div', {'id': '7d'})weather_info_7d = v_div_7d.find('ul', {'class': 't clearfix'})weather_list_7d = []for li in weather_info_7d.find_all('li'):weather_list_7d.append(li.text.strip().replace('\n', ''))# 爬取8-15天天气情况url_15d = f'http://www.weather.com.cn/weather15d/{city}.shtml'response_15d = requests.get(headers=headers, url=url_15d)soup_15d = BeautifulSoup(response_15d.content.decode('utf-8'), 'html.parser')v_div_15d = soup_15d.find('div', {'id': '15d'})weather_info_15d = v_div_15d.find('ul', {'class': 't clearfix'})weather_list_15d = []for li in weather_info_15d.find_all('li'):time = li.find('span', {'class': 'time'}).textwea = li.find('span', {'class': 'wea'}).texttem = li.find('span', {'class': 'tem'}).textwind = li.find('span', {'class': 'wind'}).textwind1 = li.find('span', {'class': 'wind1'}).textweather_list_15d.append(f"时间:{time},天气:{wea},温度:{tem},风向:{wind},风力:{wind1}")# 将城市ID、城市名称和天气信息写入csv文件csv_writer.writerow([city_id, city_name, ', '.join(weather_list_7d+weather_list_15d)])

项目二:爬取红色旅游数据

【内容】
   信阳是大别山革命根据地,红色旅游资源非常丰富,爬取http://www.bytravel.cn/view/red/index441_list.html 网页的红色旅游景点,并在地图上标注出来。
相关代码
import requests  # 导入requests库,用于发送HTTP请求
import csv  # 导入csv库,用于处理CSV文件
from bs4 import BeautifulSoup  # 导入BeautifulSoup库,用于解析HTML文档headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0 Safari/537.36','Accept-Encoding': 'gzip, deflate'  # 设置请求头,模拟浏览器访问
}# 创建csv文件并写入表头
csv_file = open('信阳红色景点.csv', 'w', newline='', encoding='utf-8')  # 打开csv文件,以写入模式
csv_writer = csv.writer(csv_file)  # 创建csv写入对象
csv_writer.writerow(['景点名称', '景点简介', '星级', '图片链接'])  # 写入表头# 爬取第一页
url = 'http://www.bytravel.cn/view/red/index441_list.html'  # 定义要爬取的网页URL
response = requests.get(headers=headers, url=url)  # 发送GET请求,获取网页内容
soup = BeautifulSoup(response.content.decode('gbk'), 'html.parser')  # 使用BeautifulSoup解析网页内容target_div = soup.find('div', {'style': 'margin:5px 10px 0 10px'})  # 在解析后的HTML中查找目标divfor div in target_div.find_all('div', {'style': 'margin:2px 10px 0 7px;padding:3px 0 0 0'}):  # 在目标div中查找所有符合条件的子divtitle_element = div.find('a', {'class': 'blue14b'})  # 在子div中查找标题元素if title_element:  # 如果找到了标题元素title = title_element.text  # 获取标题文本else:title = "未找到标题"  # 如果没有找到标题元素,设置默认值Introduction_element = div.find('div', id='tctitletop102')  # 在子div中查找简介元素if Introduction_element:  # 如果找到了简介元素intro = Introduction_element.text.strip().replace("[详细]", "")  # 获取简介文本,去除首尾空格和"[详细]"标记else:intro = "无简介"  # 如果没有找到简介元素,设置默认值star_element = div.find('font', {'class': 'f14'})  # 在子div中查找星级元素if star_element:  # 如果找到了星级元素star = star_element.text  # 获取星级文本else:star = "无星级"  # 如果没有找到星级元素,设置默认值img_url_element = div.find('img', {'class': 'hpic'})  # 在子div中查找图片链接元素if img_url_element:  # 如果找到了图片链接元素img_url = img_url_element['src']  # 获取图片链接else:img_url = "无图片链接"  # 如果没有找到图片链接元素,设置默认值print('景点名称:', title)  # 打印景点名称print('景点简介:', intro)  # 打印景点简介print('星级:', star)  # 打印星级print('图片链接:', img_url)  # 打印图片链接# 将数据写入csv文件csv_writer.writerow([title, intro, star, img_url])  # 将景点名称、简介、星级和图片链接写入csv文件# 爬取第二页到第五页
for page in range(1, 5):  # 遍历第二页到第五页url = f'http://www.bytravel.cn/view/red/index441_list{page}.html'  # 构造每一页的URLresponse = requests.get(headers=headers, url=url)  # 发送GET请求,获取网页内容soup = BeautifulSoup(response.content.decode('gbk'), 'html.parser')  # 使用BeautifulSoup解析网页内容target_div = soup.find('div', {'style': 'margin:5px 10px 0 10px'})  # 在解析后的HTML中查找目标divfor div in target_div.find_all('div', {'style': 'margin:2px 10px 0 7px;padding:3px 0 0 0'}):  # 在目标div中查找所有符合条件的子divtitle_element = div.find('a', {'class': 'blue14b'})  # 在子div中查找标题元素if title_element:  # 如果找到了标题元素title = title_element.text  # 获取标题文本else:title = "未找到标题"  # 如果没有找到标题元素,设置默认值Introduction_element = div.find('div', id='tctitletop102')  # 在子div中查找简介元素if Introduction_element:  # 如果找到了简介元素intro = Introduction_element.text.strip().replace("[详细]", "")  # 获取简介文本,去除首尾空格和"[详细]"标记else:intro = "无简介"  # 如果没有找到简介元素,设置默认值star_element = div.find('font', {'class': 'f14'})  # 在子div中查找星级元素if star_element:  # 如果找到了星级元素star = star_element.text  # 获取星级文本else:star = "无星级"  # 如果没有找到星级元素,设置默认值img_url_element = div.find('img', {'class': 'hpic'})  # 在子div中查找图片链接元素if img_url_element:  # 如果找到了图片链接元素img_url = img_url_element['src']  # 获取图片链接else:img_url = "无图片链接"  # 如果没有找到图片链接元素,设置默认值print('景点名称:', title)  # 打印景点名称print('景点简介:', intro)  # 打印景点简介print('星级:', star)  # 打印星级print('图片链接:', img_url)  # 打印图片链接# 将数据写入csv文件csv_writer.writerow([title, intro, star, img_url])  # 将景点名称、简介、星级和图片链接写入csv文件# 关闭csv文件
csv_file.close()

项目三:豆瓣网爬取top250电影数据

【内容】
运用scrapy框架从豆瓣电影top250网站爬取全部上榜的电影信息,并将电影的名称、评分、排名、一句影评、剧情简介分别保存都mysql 和mongodb 库里面。

douban.py
import scrapy  # 导入scrapy库
from scrapy import Selector, Request  # 从scrapy库中导入Selector和Request类
from scrapy.http import HtmlResponse  # 从scrapy库中导入HtmlResponse类
from ..items import DoubanspidersItem  # 从当前目录下的items模块中导入DoubanspidersItem类class DoubanSpider(scrapy.Spider):  # 定义一个名为DoubanSpider的爬虫类,继承自scrapy.Spidername = 'douban'  # 设置爬虫的名称为'douban'allowed_domains = ['movie.douban.com']  # 设置允许爬取的域名为'movie.douban.com'# start_urls = ['http://movie.douban.com/top250']  # 设置起始URL,但注释掉了,所以不会自动开始爬取def start_requests(self):  # 定义start_requests方法,用于生成初始请求for page in range(10):  # 循环10次,每次生成一个请求,爬取豆瓣电影Top250的前10页数据yield Request(url=f'https://movie.douban.com/top250?start={page * 25}&filt=')  # 使用yield关键字返回请求对象,Scrapy会自动处理请求并调用回调函数def parse(self, response: HtmlResponse, **kwargs):  # 定义parse方法,用于解析响应数据sel = Selector(response)  # 使用Selector类解析响应数据list_items = sel.css('#content > div > div.article > ol > li')  # 使用CSS选择器提取电影列表项for list_item in list_items:  # 遍历电影列表项detail_url = list_item.css('div.info > div.hd > a::attr(href)').extract_first()  # 提取电影详情页的URLmovie_item = DoubanspidersItem()  # 创建一个DoubanspidersItem实例movie_item['name'] = list_item.css('span.title::text').extract_first()  # 提取电影名称movie_item['score'] = list_item.css('span.rating_num::text').extract_first()  # 提取电影评分movie_item['top'] = list_item.css('div.pic em ::text').extract_first()  # 提取电影排名yield Request(  # 使用yield关键字返回请求对象,Scrapy会自动处理请求并调用回调函数url=detail_url, callback=self.parse_movie_info, cb_kwargs={'item': movie_item})def parse_movie_info(self, response, **kwargs):  # 定义parse_movie_info方法,用于解析电影详情页数据movie_item = kwargs['item']  # 获取传入的DoubanspidersItem实例sel = Selector(response)  # 使用Selector类解析响应数据movie_item['comment'] = sel.css('div.comment p.comment-content span.short::text').extract_first()  # 提取电影评论movie_item['introduction'] = sel.css('span[property="v:summary"]::text').extract_first().strip() or ''  # 提取电影简介yield movie_item  # 返回处理后的DoubanspidersItem实例,Scrapy会自动处理并保存结果
items.py

import scrapyclass DoubanspidersItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# passtop = scrapy.Field()name = scrapy.Field()score = scrapy.Field()introduction = scrapy.Field()comment = scrapy.Field()
pipelines.py
from itemadapter import ItemAdapter
import openpyxl
import pymysqlclass DoubanspidersPipeline:def __init__(self):self.conn = pymysql.connect(host='localhost',port=3306,user='root',password='789456MLq',db='sx_douban250',charset='utf8mb4')self.cursor = self.conn.cursor()self.data = []def close_spider(self,spider):if len(self.data) > 0:self._write_to_db()self.conn.close()def process_item(self, item, spider):self.data.append((item['top'],item['name'],item['score'],item['introduction'],item['comment']))if len(self.data) == 100:self._writer_to_db()self.data.clear()return itemdef _writer_to_db(self):self.cursor.executemany('insert into doubantop250 (top,name,score,introduction,comment)''values (%s,%s,%s,%s,%s)',self.data)self.conn.commit()from pymongo import MongoClientclass MyMongoDBPipeline:def __init__(self):self.client = MongoClient('mongodb://localhost:27017/')self.db = self.client['sx_douban250']self.collection = self.db['doubantop250']self.data = []def close_spider(self, spider):if len(self.data) > 0:self._write_to_db()self.client.close()def process_item(self, item, spider):self.data.append({'top': item['top'],'name': item['name'],'score': item['score'],'introduction': item['introduction'],'comment': item['comment']})if len(self.data) == 100:self._write_to_db()self.data.clear()return itemdef _write_to_db(self):self.collection.insert_many(self.data)self.data.clear()class ExcelPipeline:def __init__(self):self.wb = openpyxl.Workbook()self.ws = self.wb.activeself.ws.title = 'Top250'self.ws.append(('排名','评分','主题','简介','评论'))def open_spider(self,spider):passdef close_spider(self,spider):self.wb.save('豆瓣Top250.xlsx')def process_item(self,item,spider):self.ws.append((item['top'], item['name'], item['score'], item['introduction'], item['comment']))return item
settings.py相关内容修改

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

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

相关文章

HttpComponents: 概述

文章目录 1. 概述2. 生态位 1. 概述 早期的Java想要实现HTTP客户端需要借助URL/URLConnection或者自己手动从Socket开始编码&#xff0c;需要处理大量HTTP协议的具体细节&#xff0c;不但繁琐还容易出错。 Apache Commons HttpClient的诞生就是为了解决这个问题&#xff0c;它…

高德地图画渐变线

高德地图画渐变线&#xff0c;思路是将线和颜色均分为多个小线段和小颜色&#xff0c;实现渐变&#xff0c;类似于下图。 如果需要多段线&#xff0c;自己循环拼一下就可以了&#xff0c;方法返回多个小线段组成的polyline数组。 /** 高德地图画渐变线* author: liyun* params…

【WPS】Excel表格数据透视表

数据少量还好&#xff0c;如果输数多起来就麻烦了&#xff0c;最近需要汇报一个情况。 描述 譬如&#xff1a;开发&#xff08;80.00%->91.16%&#xff09;&#xff1a;共计43项&#xff08;本周新增1项&#xff09;&#xff0c;本周新增已完成2项&#xff0c;共已完成36项…

RHEL8_Linux访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建FNS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.访问NFS存储 前面介绍了本地存储&#xff0c;本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统&#xff0c;所实现的是 Linux 和 Linux 之间的共…

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起&#xff0c;越来越多的知识提供者希望搭建自己的知识付费平台。然而&#xff0c;对于新手来说&#xff0c;如何以低成本、高效率地实现这一目标&#xff0c;同时满足自身需求并提高客户转化率&#xff0c;是一大挑战。本文将…

SPA, SEO, SSR总结

SPA单页面Web应用 SPA(Single page web application) 单页面Web应用 Web不再是一张张页面,而是一个整体的应用,一个由路由系统,数据系统,页面(组件)系统等等,组成的应用程序, 让用户不需要每次与服务器进行页面刷新来获得新的内容, 从而提供了更快,跟流畅的用户体验, 在SPA中…

参与创作①周年啦~

写在前面 今天看了消息才知道&#xff0c;原来开始创作已经一年了。此篇无干货&#xff0c;纯白话&#xff0c;纯记录。 机缘 参与CSDN创作已经一年有余&#xff0c;犹记得第一篇博文是为了整理好所学内容&#xff0c;方便自己复习。没想到后面也陆陆续续发了些其他内容&…

12.8作业

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QMovie>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nul…

spring-boot-starter-validation是什么Validation参数校验使用概要

spring-boot-starter-validation是什么&Validation参数校验使用概要 来源Valid和Validated的用法(区别)引入依赖Valid和Validated的用法 在日常的项目开发中&#xff0c;为了防止非法参数对业务造成的影响&#xff0c;需要对接口的参数做合法性校验&#xff0c;例如在创建用…

系统设计-微服务架构

典型的微服务架构图 下图展示了一个典型的微服务架构。 负载均衡器&#xff1a;它将传入流量分配到多个后端服务。CDN&#xff08;内容交付网络&#xff09;&#xff1a;CDN 是一组地理上分布的服务器&#xff0c;用于保存静态内容以实现更快的交付。客户端首先在 CDN 中查找内…

临床骨科常用的肩关节疾病量表,医生必备!

根据骨科医生的量表使用情况&#xff0c;常笑医学整理了临床骨科常用的肩关节疾病量表&#xff0c;为大家分享临床常见的肩关节疾病量表评估内容&#xff0c;均支持量表下载和在线使用&#xff0c;建议收藏&#xff01; 1.臂、肩、手功能障碍&#xff08;disabilites of the ar…

flstudio21破解汉化版2024最新水果编曲使用教程

​ 如果你一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这…

2023年全球软件开发大会(QCon广州站2023)-核心PPT资料下载

一、峰会简介 本次峰会包含&#xff1a;泛娱乐时代的边缘计算与通讯、稳定性即生命线、下一代软件架构、出海的思考、现代数据架构、AGI 与 AIGC 落地、大前端技术探索、编程语言实战、DevOps vs 平台工程、新型数据库、AIGC 浪潮下的企业出海、AIGC 浪潮下的效能智能化、数据…

【池式组件】线程池的原理与实现

线程池的原理与实现 线程池简介1.线程池1.线程池2.数量固定的原因3.线程数量如何确定4.为什么需要线程池5.线程池结构 线程池的实现数据结构设计1.任务结构2.任务队列结构3.线程池结构 接口设计 线程池的应用reactorredis 中线程池skynet 中线程池 线程池简介 1.线程池 1.线程…

DeepIn,UOS统信专业版安装运行Java,JavaFx程序

因为要适配国产统信UOS系统&#xff0c;要求JavaFx程序能简便双击运行&#xff0c;由于网上UOS开发相关文章少&#xff0c;多数文章没用&#xff0c;因此花了不少时间&#xff0c;踩了不少坑&#xff0c;下面记录一些遇到的问题&#xff0c;我的程序环境是jdk1.8&#xff0c;为…

【K8s】Kubernetes CRD 介绍(控制器)

文章目录 CRD 概述1. 操作CRD1.1 创建 CRD1.2 操作 CRD 2. 其他笔记2.1 Kubectl 发现机制2.2 校验 CR2.3 简称和属性 3. 架构设计3.1 控制器概览 参考 CRD 概述 CR&#xff08;Custom Resource&#xff09;其实就是在 Kubernetes 中定义一个自己的资源类型&#xff0c;是一个具…

如何为 3D 模型制作纹理的最佳方法

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 您可以通过不同的方式为 3D 模型创建 3D 纹理。下面我们将介绍为 3D …

《opencv实用探索·十四》VideoCapture播放视频和视像头调用

1、VideoCapture播放视频 #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main() {// 定义相关VideoCapture对象VideoCapture capture;// 打开视频文件capture.open("1.avi");// 判断视频流读取是否正…

Python os模块及用法

os 模块代表了程序所在的操作系统&#xff0c;主要用于获取程序运行所在操作系统的相关信息。 在 Python 的交互式解释器中先导入 os 模块&#xff0c;然后输入 os.__all__ 命令&#xff08;__all__ 变量代表了该模块开放的公开接口&#xff09;&#xff0c;即可看到该模块所包…

Linux DataEase数据可视化分析工具本地部署与远程访问

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务…