python爬各平台评论并数据分析——数据采集、评论情绪分析、新闻热度

一、爬取数据

小问题汇总

1.python之matplotlib使用系统字体

用于解决python绘图中,中文字体显示问题

2.cookie与视频页面id(b站、微博等)查看

F12打开网页开发者模式,然后F5刷新,进入控制台中的网络,查看Fetch/XHR
请添加图片描述

3.爬取wb评论时,最好使用网页手机端

网页手机端:https://m.weibo.cn/?sudaref=cn.bing.com

4.从存储文件读数据,可能会提示编码错误

对文件的打开方式,添加代码encoding='utf-8'

b站爬虫

1.前提准备工具
  1. 安装 Python 3。
  2. 安装所需的库。在命令行中输入以下命令:pip install selenium beautifulsoup4 webdriver-manager
  3. 安装 chrome浏览器以及启动软件chromedriver.exe(版本号要接近),使用selenium + chrome浏览器爬取数据
  4. .csv文件用excel或者notepad打开都会乱码,可用记事本打开,或者用excel导入.csv文件,具体过程自行百度
2.使用说明
1.功能说明
  • 批量爬取B站多个视频的评论,使用Selenium而非B站api,能爬取到更全面的数据。
  • 能够断点续爬,可以随时关闭程序,等到有网络时再继续运行。
  • 遇到错误自动重试,非常省心,可以让它自己爬一整晚。
2.关于断点续爬与progress
4.注意实现
  1. 用Excel打开 CSV 文件查看时,可能会发现有些单元格报错显示"$NAME?“,这是由于这个单元格的内容是以”-“符号开头的,例如昵称”-Ghauster"。
  2. 如果代码报错Permission denied,请查看是否有别的进程占用了正在写入中的 CSV 文件或 progress.txt 文件(比如,文件被我自己打开了),检查是否有写入权限。还不行,可以尝试以管理员身份运行代码(遇到PermissionError,都可以尝试以管理员身份运行来解决)。
  3. 爬取超大评论量的热门视频时,网页可能会因为内存不足而崩溃。如果发生这种情况,程序会在一定时间后自动重启浏览器断点续爬。但是如果网页都还没有滚动到底全部加载完、都还没有开始爬,就内存不足了,那无论自动重试多少次都会重复出现网页崩溃的问题,此时建议限制最大滚动次数。
  4. 在使用selenium + chrome浏览器爬取数据时,如果该视频评论量过大,selenium模拟浏览器会产生大量的临时文件。目前,程序将缓存存储在代码文件所在目录中,重试续爬前我们可以自行删除。
  5. 如果程序长时间没有动静(控制台长时间没有打印当前进度),就重启程序吧,它会断点续爬的。这可能是因为访问b站过于频繁,阿b不想理你了(或者要输验证码了)。如果这个问题频繁发生,可以尝试延长延时时间,或改为随机延时。
    添加随机延时:
    import random
    在想要延时的地方写time.sleep(random.uniform(1, 5)) # 随机生成1到5秒之间的延时,具体秒数可根据需要修改
完整代码

github:https://github.com/Ghauster/BilibiliCommentScraper
记得给作者点星星

微博爬取

1.前提准备工具
  1. 安装SQLiteSpy,用于查看.db文件(爬取数据存储方式)
  2. cookie是以SUB=_2A2开头的
  3. User-Agent也可以找到,Mozilla/5.0 (Macintosh。。。
2.使用步骤
  1. 点进微博正文
    在这里插入图片描述
    地址栏中的数字:491…278就是ID号
    仅修改代码中的weibo_id即可,可自行写循环,读取多个视频id
    在这里插入图片描述
  2. 可自行修改每次的获取量max_retries,不易太大,容易被🈲
完整代码
import requests
import _sqlite3
import time

def req(comment_id, max_id, max_id_type):
    if max_id == '':
        url = f'https://m.weibo.cn/comments/hotflow?id={comment_id}&mid={comment_id}&max_id_type={max_id_type}'
    else:
        url = f'https://m.weibo.cn/comments/hotflow?id={comment_id}&mid={comment_id}&max_id={max_id}&max_id_type={max_id_type}'
    #     add your cookie here
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
        'cookie': 'SUB=_2A25JgtBTDeRhGeFK6lAZ8i3JwzuIHXVqjPAbrDV6PUNbktAGLU_BkW1NQ4YXL0ReJHn1GmrpS18v3XL0JC5yCKFN; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFU_bVsl9QC9P9MnfDn.wXg5JpX5KMhUgL.FoMXeKzReoef1hM2dJLoIEnLxK-L12BL1KMLxK-LBo2LBo2LxKBLB.zLBK-LxK-L12BL1KMEeh50; SSOLoginState=1686544387; ALF=1689136387; BAIDU_SSP_lcr=https://login.sina.com.cn/; mweibo_short_token=460be2ed11; M_WEIBOCN_PARAMS=oid%3D4910481981055278%26luicode%3D20000061%26lfid%3D4910481981055278%26uicode%3D20000061%26fid%3D4910481981055278'
    }

    content = requests.get(url, headers=headers)

    return content

# replace the weibo id you want to get comment of
weibo_id = 4907763291915412

db_name = str(weibo_id) + '_comments.db'
conn = _sqlite3.connect(db_name)
c = conn.cursor()
c.execute('''
        CREATE TABLE IF NOT EXISTS comments( 
            id TEXT PRIMARY KEY,
            created_time TEXT,
            screen_name TEXT,
            user_id TEXT,
            content TEXT
        )
    ''')

retry_count = 0
max_retries = 10

max_id_type = 0
data = req(weibo_id, max_id='', max_id_type=0).json()

comments = data['data']['data']
max_id = data['data']['max_id']

max_page = data['data']['max']
total_num = data['data']['total_number']
count = 1
print(f'total {max_page} pages,{total_num} comments')
print(f'the first page has {len(comments)} comments')
time.sleep(5)
while retry_count < max_retries:
    try:
        content = req(weibo_id, max_id, max_id_type).json()
        if content['ok'] == 0:
            break
        max_id = content['data']['max_id']
        max_id_type = content['data']['max_id_type']
        content = content['data']['data']
        count += 1
        print(f'page {count} has {len(content)} comments')

        for comment in content:
            c.execute('''
                INSERT OR REPLACE INTO comments VALUES (?,?,?,?,?)
            ''', (
                comment['id'],
                comment['created_at'],
                comment['user']['screen_name'],
                comment['user']['id'],
                comment['text']
            ))
        conn.commit()
        if max_id == 0:
            break
        retry_count = 0
        time.sleep(5)
    except Exception as e:
        retry_count += 1
        print(f'an error occurred:{e},retrying...')
        time.sleep(5)
        continue
conn.close()


数据分析

1.数据爬取后读取接口

注意:所有函数接口都是接收列表或者txt文件

  1. 从.db文件读取某一列放列表中(以评论内容为例)
import sqlite3
    comments = []
    conn = sqlite3.connect(r'D:\PyCharm\pythonProject2\B\4875620099559502_comments.db')
    c = conn.cursor()
    ret = c.execute("select * from comments")  # 获取该表所有元素
    for row in ret:
        comments.append(row[4])# 获取该表第五列数据
    conn.close()

  1. 从.xlsx(excel)读取,写入另一个txt文件中(也可以放入列表或者其他)
file_path = r'C:\Users\lijiale\Desktop\b站评论数据分析\data2.xlsx'
txt_path = r'C:\Users\lijiale\Desktop\b站评论数据分析\l.txt
df = pd.read_excel(file_path)  # 默认读取工作簿中第一个工作表,默认第一行为表头
data = df['评论内容'].values.tolist()
f = open(txt_path, "w",encoding='utf-8')
for line in data:
    f.write(str(line))
f.close()

2.词云图

以comments列表为接收参数


def form_wordcloud(comments):
	mk = imread('词云背景图.png') #词云图形状,放当前目录下
    """解析评论内容并形成词云"""
    word = ''.join(comments)
    # 使用jieba分词并提取出现频率前200的名词、动词、形容词等有代表性的词汇
    topWord_lis = jieba.analyse.extract_tags(word, topK=200, allowPOS='n''v''a''vn''an')
    topWord = ' '.join(topWord_lis)
    # 词云参数配置
    w = wordcloud.WordCloud(
        background_color='white',
        font_path=r"C:\Windows\Fonts\simhei.ttf",  # 字体
        width=2000,
        height=1500,
        max_words=1000,
        max_font_size=80,
        min_font_size=10,
        mode='RGBA',
        mask=mk,  # 背景图
    )

    w.generate(topWord)
    w.to_file('评论词云.png')
    print('词云形成!')

3.情感分析

def get_emotion(comment):
    """对一条评论进行情感分析,返回该评论的情感属性(emotion_label可能为0,1,2,分别对应消极的、中肯的、积极的)"""
    # 百度API认证
    APP_ID = '********'
    API_KEY = '********'
    SECRET_KEY = '********'

    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    comment = ''.join(re.findall('[\u4e00-\u9fa5]', comment))  # 去除评论文本中的特殊字符
    # 调用情感倾向分析
    dic = client.sentimentClassify(comment)
    # 可能存在没有文本的空评论,异常处理保证程序执行的连续性
    try:
        emotion_label = dic['items'][0]['sentiment']
    except KeyError:
        return 1  # 若无内容,则为中性评论
    return emotion_label

4.绘图



def emotion_analysis(comments):
    """对所有评论进行情感分析并绘制饼图"""
    pos_comment = 0  # 积极
    rel_comment = 0  # 中肯
    neg_comment = 0  # 消极
    for comment in comments:
        if get_emotion(comment) == 0:
            neg_comment += 1
        elif get_emotion(comment) == 1:
            rel_comment += 1
        else:
            pos_comment += 1

    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文支持
    plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
    plt.style.use('fivethirtyeight')  # 图表样式

    attitude = ['消极的', '积极的', '中肯的']  # 标签
    popularity = [neg_comment, pos_comment, rel_comment]  # 数据
    # 绘制饼图
    plt.pie(popularity, labels=attitude, autopct='%1.1f%%',
            counterclock=False, startangle=90, explode=[0, 0.1, 0])
    plt.title('评论情感分析')
    plt.tight_layout()
    plt.savefig('情感分析结果.png')
    plt.show()

    print('情感分析完毕!')


央视新闻标题

# _*_ coding: utf-8 _*_
import requests
import re
from datetime import datetime

def cctv(company, page):
    num = (page)

    # 第一步:模拟浏览器,在央视网中输入相应的企业,并得到网页源代码
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'}
    url = 'https://search.cctv.com/search.php?qtext=' + company + '&sort=date&type=web&vtime=&page=' + str(num)
    print('正在获取----------------》》》',url)
    res = requests.get(url, headers=headers, timeout=10).text

    # print(res)
    # 第二步:正则表达式提取文本信息
    p_href = '<span lanmu1=".*?"'
    p_title = 'target="_blank">.*?</a>'
    p_source = '<div class="src-tim">.*?<span class="src">(.*?)</span>'
    p_date = '<div class="src-tim">.*?<span class="tim">(.*?)</span>'
    href = re.findall(p_href, res, re.S)
    title = re.findall(p_title, res, re.S)
    for i in range(20):
        title.remove('target="_blank"></a>')
    source = re.findall(p_source, res, re.S)
    date = re.findall(p_date, res, re.S)

    # 第三步:信息清洗
    for i in range(len(title)):
        title[i] = title[i].strip().replace('target="_blank">', '')
        title[i] = title[i].strip().replace('</a>', '')
        href[i] = href[i].strip().replace('<span lanmu1="', '')
        href[i] = href[i].strip().replace('"', '')
        source[i] = source[i].strip()
        date[i] = date[i].strip()

    # 第四步:自动生成报告
    # time = datetime.now().strftime('%Y-%M-%d')
    # file_path = time
    file1 = open('结果数据' + '.txt', 'a', encoding='utf-8')
    file1.write(company + '数据爬取开始了!' + '\n' + '\n')

    # 第五步:输出爬取信息到数据报告中
    for i in range(len(title)):
        file1.write(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')' + '\n')
        file1.write(href[i] + '\n')

    file1.write('-' * 60 + '\n' + '\n')
    file1.close()

# 第六步:依次爬取不同的企业

companys = ['皮影戏']
for company in companys:
    for i in range(10):
        try:
            cctv(company, i + 1)
            print(company + '第' + str(i + 1) + '页信息爬取成功!')
        except:
            print(company + '第' + str(i + 1) + '页信息爬取失败!')


网易新闻标题

# PyCode-Github/爬虫-所有
# _*_ coding: utf-8 _*_
# @Time : 2022/4/27 21:19
# @FileName : 网易新闻.py
import random
import time

import pandas as pd
import requests
from bs4 import BeautifulSoup

headers = {
    "Cookie": 'WM_TID=vmnobKPZql5FQQAVBVIqvvBV1sX%2F4YTJ; WM_NI=cIS3xusLaiBpcwc1aU3Xy%2FsmuTRyBvwuDzOyWuyiI%2F8JTbyERrL8KzkBmmJXGu98YyEgTM77a89tnKc4OxLEzkHfAm4SOu8K0DyCznFvGgXszoVhvB6ijwhTFYu5Vjt7eUM%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee86d180a596aeb8e480b1968fb6d84e868e9e86c15e97e7b798fc738de9fdd1d32af0fea7c3b92aa1979dd4fb7fb194af8ac17ca1a9add2e45ff188b7d0f267b78c9e9ac17eb5ab8c9bce7395abb78acc25fc969c83fc4f92ae84d9ca72a99ea38ec95485abf7d9dc7387b99caeb63da3e8f795ed41a1ec8199cf4fbab58887c467f88d8196bb41f49cb7a4f96686aa8988db79bab19a89f54af6b7a698eb608687bbd6d562b8e9abb6d037e2a3; _ntes_nnid=dd35c7c0872421fca032e3d8604a9733,1650637481352; _ntes_nuid=dd35c7c0872421fca032e3d8604a9733; _antanalysis_s_id=1651065371996',
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.30'
}

# 获取文章文字
def getItemInfo(url):  # 获取文字
    try:
        res = requests.get(url, headers=headers).content.decode('utf-8')
        soup = BeautifulSoup(res, "lxml")
        title = soup.select('.post_title')[0].string  # (标题)
        contentList = soup.select('.post_body > p')
        content = ''  # (内容)
        for i in contentList:
            content += str(i.string)
        content = str(content).replace('None', '')
        content = content[0:200] #截取前200个
        time = soup.select('.post_info')[0].contents[0].string
        time = str(time).split(' ')[0]  # 截取时间
        time = time.replace('  ', '')  # 替换空格(时间)
        author = soup.select('.post_info')[0].contents[1].string  # (作者)
        print('获取成功~~', url)
        return [title, author, time, content, url]
    except:
        title = soup.select('.title_wrap > h1')[0].string  # (视频标题)
        print('视频链接~~', url)
        return [title, ' ', ' ', ' ', url]

# 获取所有URL
# url = 'https://www.163.com/search?keyword=%E8%AF%88%E9%AA%97'  #获取诈骗关键字
url = 'https://www.163.com/search?keyword=%%E4%BC%A0%E7%BB%9F%E7%9A%AE%E5%BD%B1%E6%88%8F'  # 获取反诈关键字
response = requests.get(url, headers=headers).content.decode('utf-8')
print(len(response))
soup = BeautifulSoup(response, "lxml")
listBox = soup.select('.keyword_list > .keyword_new > h3 > a')
for i in listBox:
    try:
        itemInfo = getItemInfo(i['href'])
        # time.sleep(random.randint(1, 5))  # 延时随机1-5
    except:
        print('获取所有URl报错了~~~~~')
    df = pd.read_csv('新闻数据.csv', encoding='utf-8')
    df.loc[len(df)] = itemInfo  # 其中loc[]中需要加入的是插入地方dataframe的索引,默认是整数型
    df.columns = ['标题', '作者', '时间', '内容', '文章链接']
    df.to_csv('新闻数据.csv', index=False, encoding='utf_8_sig')
print('总共获取数据:', len(listBox))


#学习资源推荐

零基础Python学习资源介绍

👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈
在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈
检查学习结果。
在这里插入图片描述
👉面试刷题👈
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为何外贸公司应该采用CRM客户管理软件?

在外贸行业中&#xff0c;客户关系管理尤为关键。在当下的大数据背景下&#xff0c;所有规模的外贸公司都迫切地需要进行数字化改造。无论是大型公司还是小型业务&#xff0c;他们都希望通过深入分析客户数据&#xff0c;为用户提供更优的体验&#xff0c;并据此调整企业战略。…

自动化批量导入机器到Jumpserver:提高效率与一致性的关键步骤

Ansible批量主机机器到Jumpserver 1、背景 在现代 IT 环境中&#xff0c;随着机器数量的增加和复杂性的提高&#xff0c;手动管理和配置机器变得越来越困难和耗时。为了提高效率并确保一致性&#xff0c;自动化工具成为了不可或缺的一部分。Jumpserver 是一个功能强大的堡垒机…

Linux之系统安全与应用

Linux系统提供了多种机制来确保用户账号的正当&#xff0c;安全使用。 系统安全措施 一. 清理系统账号 1.1 将用户设置为无法登录 Linux系统中除手动创建的各种账号外&#xff0c;还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户root以外&#xff0c;其他的…

企业能源消耗监测管理系统是否可以做好能源计量与能耗分析?

能源消耗与分析是能源科学管理的基础&#xff0c;也可促进能源管理工作的改善&#xff0c;在企业中能源管理系统的作用也愈加重要。 首先&#xff0c;能源计量是能源管理的基础&#xff0c;通过能源精准计老化&#xff0c;容易出现测量设备不准确以及其他一些人为因素原因导致…

NC65中间件能启动,前端客户端启动失败,加载异常,卡住(org.owasp.esapi)

控制台输出错误 ESAPI.properties could not be loaded by any means. Fail.SecurityConfiguration class(org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.效果图&#xff1a; 解决方案 添加如下参数&#xff1a; -Dorg.owasp.esapi.resou…

金融帝国实验室(Capitalism Lab)V10版本推出新招高管待命选项

金融帝国实验室&#xff08;Capitalism Lab&#xff09;V10版本推出新招高管待命选项 ————————————— 【全新V10版本开发播报】 即将发布的V10版本&#xff0c;在“分配管理器”菜单上将引入一个名为“暂时待命”的新功能。启用此选项后&#xff0c;分配给公司的高…

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时&#xff0c;它会自动创建三个网络&#xff0c;bridge&#xff08;创建容器默认连接到此网络&#xff09;、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace&#xff0c;即容器和宿主机使用同一个IP、端口范围&#xff08;容器与宿主机或其他使…

Vulnhub靶场DC-6

攻击机192.168.223.128 靶机192.168.223.134 主机发现:nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.134 开启了22 80端口&#xff0c;80是apache 2.4.25 先进入web界面看一下 用ip进不去&#xff0c;应该被重定向到wordy.com vim /etc/hosts 加上 19…

【医学图像隐私保护】联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

联邦学习&#xff1a;密码学 机器学习 分布式 提出背景&#xff1a;数据不出本地&#xff0c;又能合力干大事联邦学习的问题 分布式机器学习&#xff1a;解决大数据量处理的问题横向联邦学习&#xff1a;解决跨多个数据源学习的问题纵向联邦学习&#xff1a;解决数据分散在多…

某马头条——day11+day12

实时计算和定时计算 流式计算 kafkaStream 入门案例 导入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusions><exclusion><artifactId>connect-json</artifactId&…

NOIP2003提高组T1:神经网络

题目链接 [NOIP2003 提高组] 神经网络 题目背景 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&am…

MSB30M-ASEMI小功率开关电源MSB30M

编辑&#xff1a;ll MSB30M-ASEMI小功率开关电源MSB30M 型号&#xff1a;MSB30M 品牌&#xff1a;ASEMI 正向电流&#xff08;Id&#xff09;&#xff1a;3A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;50A 正向电压&#xff08;…

电影《花千骨》成开年第一烂,新派系当家IP滑铁卢

2024电影市场“开年第一烂”落到了《花千骨》头上。 在整个行业都在为春节档蓄势的情况下&#xff0c;电影市场显得有些沉寂&#xff0c;票房表现也不太出彩&#xff0c;其中最大的输家莫过于新派系文化出品的电影版《花千骨》。 从1月20日上映至今&#xff0c;5天累计票房仅…

带头 + 双向 + 循环链表增删查改实现

目录 源码&#xff1a; List.c文件&#xff1a; List.h文件&#xff1a; 简单的测试&#xff1a; 很简单&#xff0c;没什么好说的&#xff0c;直接上源码。 源码&#xff1a; List.c文件&#xff1a; #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

10.Elasticsearch应用(十)

Elasticsearch应用&#xff08;十&#xff09; 1.为什么需要聚合操作 聚合可以让我们极其方便的实现对数据的统计、分析、运算&#xff0c;例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如…

【Linux】Linux任务管理与守护进程

Linux任务管理与守护进程 一、任务管理1、进程组概念2、作业概念3、会话概念4、相关操作&#xff08;1&#xff09;前台进程&后台进程&#xff08;2&#xff09;jobs、fg、bg、kill 5、ps命令查看指定的选项 二、守护进程1、守护进程的概念2、守护进程的查看3、守护进程的创…

支付宝AES如何加密

继之前给大家介绍了 V3 加密解密的方法之后&#xff0c;今天给大家介绍下支付宝的 AES 加密。 注意&#xff1a;以下说明均在使用支付宝 SDK 集成的基础上&#xff0c;未使用支付宝 SDK 的小伙伴要使用的话老老实实从 AES 加密原理开始研究吧。 什么是AES密钥 AES 是一种高级加…

2.依附弹窗(AttachListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7 基于基础的Popup对象实现的依附于某个控件的弹窗&#xff0c;弹窗可呈现数组对象&#xff0c;达到较好的选择交互效果。 1.布局 通过Border实现圆角边框轮廓&#xff0c;然后通过内部的ListView实现列表展示。…

Cesium数据加载

文章目录 0.引言1.影像加载1.1Bing地图1.2天地图1.3ArcGIS在线地图1.4高德地图1.5OSM影像1.6MapBox影像 2.OGC地图服务2.1WMS2.2WMTS2.3TMS 3.GeoJSON数据加载4.KML数据加载5.TIFF数据加载6.点云数据加载7.地形数据加载7.1在线地形数据加载7.2本地地形数据加载 8.倾斜摄影模型数…

xcode 设置 ios苹果图标,为Flutter应用程序配置iOS图标

图标设置 1,根据图片构建各类尺寸的图标2.xcode打开ios文件3.xcode设置图标4.打包提交审核,即可(打包教程可通过我的主页查找) 1,根据图片构建各类尺寸的图标 工具网址:https://icon.wuruihong.com/ 下载之后文件目录如下 拷贝到项目的ios\Runner\Assets.xcassets\AppIcon.ap…