【python基础】爬虫练习

不知道大家有没有通过豆瓣网寻找一些排名较高的电影,反正小编基本上是顺着排名一点点找电影看。


在这里插入图片描述

本文将详细介绍如何使用Python爬虫抓取豆瓣网电影评论用户的观影习惯数据,并进行简单的数据处理和分析。

目录

  • 一、配置环境
    • 1.1、 安装Python
    • 1.2、 安装Requests库和BeautifulSoup库
    • 1.3.、安装Matplotlib
  • 二、登录豆瓣网(重点)
    • 2.1、获取代理
    • 2.2、测试代理ip是否可用
    • 2.3、设置大量请求头随机使用
    • 2.4、登录豆瓣网
  • 三、爬取某一部热门电影数据
    • 3.1、爬取全部长、短评论
    • 3.2、获取用户观影数据
    • 3.3、存入数据库
  • 四、实战代码示例
  • 五、总结
    • 关于Python的技术储备
      • 1.Python所有方向的学习路线
      • 2.学习软件
      • 3.学习资料
      • 4.实战资料
      • 5.视频课程

一、配置环境

在开始爬取豆瓣网电影评论数据之前,我们需要配置好Python开发环境和相关依赖库。

1.1、 安装Python

首先,我们需要安装Python。建议使用Python 3.x版本。可以在官网下载并安装对应版本的Python:https://www.python.org/downloads/。

1.2、 安装Requests库和BeautifulSoup库

接下来,我们需要安装两个Python库:Requests和BeautifulSoup。Requests库可以用于发送HTTP请求,获取网页内容,而BeautifulSoup库可以用于解析HTML文档,提取所需数据。

可以使用pip命令自动安装这两个库:

pip install requestspip install beautifulsoup4

1.3.、安装Matplotlib

如果我们需要对抓取的数据进行可视化分析,可以使用Matplotlib库。可以使用pip命令安装:

pip install matplotlib

安装完成后,我们就可以开始爬取豆瓣网电影评论数据了。

二、登录豆瓣网(重点)

豆瓣网对爬虫有一定的反爬虫策略,根据实战经验反爬一般作用于用户ID、用户IP和请求头的过滤,为了避免被封禁IP,代码中需要加入一些反爬虫措施:

设置请求间隔
使用代理IP
伪装请求头等

2.1、获取代理

使用代理可以帮助我们隐藏自己的真实IP地址,避免被封禁IP或者限制访问。在爬取豆瓣网电影评论数据时,如果频繁地访问同一个IP地址,豆瓣网可能会禁止我们的访问,因此使用代理也可以防止被封禁。这里我使用的是站大爷代理ip来进行操作的。

以下是使用用户名+密码授权获取ip代码示例:

 import requests#你要访问的网址
url = 'http://www.ip138.com/'
proxies = {'http': 'http://账号:密码@ip:port','https': 'http://账号:密码@ip:port'
#“用户名+密码”授权,账号为实例ID,密码为8位数字的密码,不用MD5加密,在后台的实例管理下可以看到}
response = requests.get(url, proxies=proxies)

2.2、测试代理ip是否可用

测试代理IP是否可用是为了确保我们使用的代理IP能够正常工作,防止由于代理IP失效或无效而导致爬虫请求失败。一般来说,我们可以通过发送请求来测试代理IP是否可用,如果请求成功则说明代理IP可用,否则说明代理IP无效或被封禁。

测试代理IP的代码可以通过如下方式实现:

 1. 定义一个函数,接收代理IP和目标网站URL作为参数2.在函数中,使用requests库发送请求,并设置代理IP3. 如果请求成功,则说明代理IP可用,返回True4.如果请求失败,则说明代理IP无效或被封禁,返回False

以下是一段测试代理IP的代码示例:

import requestsdef test_proxy_ip(proxy_ip, target_url):proxies = {'http': 'http://' + proxy_ip,'https': 'http://' + proxy_ip}try:response = requests.get(target_url, proxies=proxies, timeout=5)if response.status_code == 200:return Trueelse:return Falseexcept:return False

在上述代码中,我们定义了一个test_proxy_ip函数,该函数接收代理IP和目标网站URL作为参数。在函数中,我们首先根据传入的代理IP构造proxies字典,然后使用requests库发送请求,并设置proxies参数为该字典。如果请求成功,则说明代理IP可用,函数返回True;否则函数返回False。

当我们在爬取豆瓣网电影评论数据时,可以使用上述代码测试代理IP是否可用。如果代理IP可用,则使用该代理IP发送请求;如果代理IP无效或被封禁,则需要更换新的代理IP。

2.3、设置大量请求头随机使用

爬取豆瓣网电影评论用户的观影习惯数据要设置大量请求头随机使用是为了防止网站监测到我们的请求头是模拟的,并防止被反爬虫机制封禁IP。因此,我们需要尽可能多的提供不同的请求头信息,对请求头进行随机使用,以降低被监测到的概率。

以下是一个随机使用请求头的示例代码:

import randomUSER_AGENTS = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',# 更多用户代理信息...]def get_random_user_agent():return random.choice(USER_AGENTS)headers = {'User-Agent': get_random_user_agent(),'Referer': 'https://www.douban.com','Cookie': 'your_cookie'}

在以上代码中,我们定义了一个USER_AGENTS列表,包含多个常用浏览器的User-Agent信息。然后定义了一个get_random_user_agent()函数,用于随机从USER_AGENTS列表中获取一个User-Agent信息。最后,我们设置headers变量,使用get_random_user_agent()函数获取随机的User-Agent信息,并将其赋值到headers变量中,作为请求头信息。

需要注意的是,我们在使用随机请求头的同时,仍然需要保持一定的爬取速度和请求间隔,以避免被封禁。同时,如果服务器在返回的内容中发现请求头信息异常,我们也可能被视为爬虫而被封禁。因此,在进行豆瓣网电影评论用户数据爬取时,需要谨慎处理请求头信息。

2.4、登录豆瓣网

以下是一个使用selenium模拟登录豆瓣网并保存cookie的示例代码:

from selenium import webdriver
import time
import picklelogin_url = 'https://accounts.douban.com/passport/login?source=movie'
username = 'your_username'
password = 'your_password'
cookie_file = 'cookies.pkl'
# 启动浏览器
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
# 访问登录页面
driver.get(login_url)
# 输入用户名和密码
driver.find_element_by_id('username').send_keys(username)
driver.find_element_by_id('password').send_keys(password)
# 等待用户输入验证码
time.sleep(30)
# 点击登录按钮
driver.find_element_by_class_name('account-form-field-submit ').click()
# 等待新页面加载完成
time.sleep(10)
# 保存cookie到文件
cookies = driver.get_cookies()
with open(cookie_file, 'wb') as f:pickle.dump(cookies, f)
# 关闭浏览器
driver.quit()

在以上代码中,我们首先初始化了一些变量,包括登录页面的URL、豆瓣账号的用户名和密码、以及保存cookie的文件名。

然后,我们启动了Chrome浏览器,并通过driver.get()方法访问了豆瓣登录页面。接着,我们使用selenium模拟了用户在页面上输入了用户名和密码,并等待了30秒,以留出时间输入验证码。

最后,我们点击登录按钮,等待新页面加载完成,获取了cookies并将其保存到本地文件中。注意,这里我们使用了pickle模块将cookies对象序列化并保存到文件中,以便后续使用。

同时,我们还使用了driver.quit()方法关闭了浏览器。

三、爬取某一部热门电影数据

前面我们已经把爬取豆瓣网的准备工作全部完成,然后接下来就是爬取豆瓣网中某一部热门电影的各种数据了

3.1、爬取全部长、短评论

爬取热门电影的全部长短评论可以获得以下信息:

  用户评价:通过阅读用户的评论,可以了解用户对电影的评价、看法和推荐指数等信息,有助于我们更好地了解电影的口碑和观众反应。关键词提取:通过分析评论文本提取关键词,可以了解电影的主题、情感、人物关系等信息,有助于我们深入了解电影的故事情节和风格。数据分析:通过统计评论数量、评分分布、用户画像等数据,可以帮助我们更好地了解电影的市场表现和受众群体,为影视公司、制片人和电影院等决策者提供有价值的数据支持。

因此,爬取热门电影的全部长短评论是一项非常有价值的工作,可以为我们提供大量有用的信息和数据分析基础。

以下是一个使用BeautifulSoup和requests库爬取豆瓣网某部电影全部长、短评论说明的示例代码

import requests
from bs4 import BeautifulSoup# 设置请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
# 豆瓣电影页面URL
url = 'https://movie.douban.com/subject/1292052/'
# 发送请求获取页面HTML
response = requests.get(url, headers=headers)
html = response.text
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html, 'html.parser')
# 查找长评和短评标签
long_comments = soup.select_one('#hot-comments > div > div.article > span')
short_comments = soup.select_one('#comments > div > h2 > span')
# 提取评论数量并输出
long_comments_count = long_comments.text.replace('全部', '').replace('条', '').strip()
short_comments_count = short_comments.text.replace('全部', '').replace('条', '').strip()
print(f"长评:{long_comments_count}")
print(f"短评:{short_comments_count}")
# 查找所有长评和短评内容
long_comments_list = soup.select('#hot-comments > div > div.article > div > div.comment > p')
short_comments_list = soup.select('#comments > div > div.comment > p')
# 输出每个评论的内容
for comment in long_comments_list:print(comment.text.strip())   
for comment in short_comments_list:print(comment.text.strip())

在以上代码中,我们首先设置了请求头,指定了请求的User-Agent信息。然后,我们定义了电影页面的URL,并发送了GET请求获取了页面的HTML。

接着,我们使用BeautifulSoup解析了页面的HTML,并查找了长评和短评标签。通过提取标签文本中的评论数量信息,我们可以输出电影的长、短评数量。

最后,我们再次使用CSS选择器查找所有长、短评内容,并通过遍历列表输出了每个评论的文本内容。

3.2、获取用户观影数据

获取用户观影数据可以帮助我们了解用户的观影喜好和习惯,可以通过分析用户的观影历史和评分记录等内容,得到以下信息:

  用户偏好:根据用户观影历史和评分记录,可以了解用户的观影偏好和喜好,有助于我们推荐更符合用户口味的电影和影视作品影视推荐:通过分析用户的观影历史和评分记录,可以为用户推荐更符合其口味的电影和影视作品,提高用户体验和满意度数据分析:通过统计用户评分和观影记录,可以了解影片的市场表现和受众群体,为制片人、电影院和影视公司等提供有价值的数据分析支持

因此,获取用户观影数据是一项非常有价值的工作。以下是获取用户观影数据的Python代码示例:

import requests
import json# 登录豆瓣网
session = requests.session()
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': 'https://accounts.douban.com/passport/login',
}
data = {'name': 'your_username', # 替换为自己的用户名'password': 'your_password', # 替换为自己的密码'remember': 'false',
}
session.post(url, headers=headers, data=data)
# 获取用户观影数据
uid = 'your_user_id' # 替换为自己的用户ID
url = 'https://movie.douban.com/subject_suggest?q=%E7%94%B5%E5%BD%B1' # 电影页面URL
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': 'https://www.douban.com/',
}
response = session.get(url, headers=headers)
data = json.loads(response.text)
movie_id = data[0]['id'] # 获取电影ID
url = f'https://movie.douban.com/subject/{movie_id}/' # 获取电影详情页面URL
response = session.get(url, headers=headers)
url = response.url + 'comments?start=0&limit=20&status=P&sort=new_score' # 获取电影短评页面URL
response = session.get(url, headers=headers)
data = response.text
print(data) # 输出评论内容

以上代码示例中,我们首先需要登录豆瓣网,然后通过获取电影ID和电影详情页面URL来获取其热门评论页面的URL,最后通过发送HTTP请求获取评论数据。注意,需要设置请求头信息,以避免请求被网站屏蔽。

3.3、存入数据库

将获取的数据存入数据库的好处:

  数据持久化:将数据存入数据库中可以保证数据长期保存,避免数据丢失的情况数据分析:将数据存入数据库后,可以使用SQL等工具进行数据分析和数据挖掘,得到更深入的信息和结论数据管理:将数据存入数据库后,可以方便对数据进行管理、查询和更新

以下是将获取的去重后的数据存入数据库的Python代码示例:

import requests
import json
import pymysql# 登录豆瓣网
session = requests.session()
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': 'https://accounts.douban.com/passport/login',
}
data = {'name': 'your_username', # 替换为自己的用户名'password': 'your_password', # 替换为自己的密码'remember': 'false',
}
session.post(url, headers=headers, data=data)
# 获取用户观影数据
uid = 'your_user_id' # 替换为自己的用户ID
url = 'https://movie.douban.com/subject_suggest?q=%E7%94%B5%E5%BD%B1' # 电影页面URL
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': 'https://www.douban.com/',
}
response = session.get(url, headers=headers)
data = json.loads(response.text)
movie_id = data[0]['id'] # 获取电影ID
url = f'https://movie.douban.com/subject/{movie_id}/' # 获取电影详情页面URL
response = session.get(url, headers=headers)
url = response.url + 'comments?start=0&limit=20&status=P&sort=new_score' # 获取电影短评页面URL
response = session.get(url, headers=headers)
data = response.json()
result = []
for comment in data['comments']:item = {'id': comment['id'],'user_name': comment['author']['name'],'rating': comment['rating']['value'],'create_time': comment['created_at'],'content': comment['content'],}result.append(item)
# 去重
result2 = []
for i in result:if i not in result2:result2.append(i)
# 存入数据库
db = pymysql.connect(host='localhost', user='root', password='123456', database='test')
cursor = db.cursor()
for item in result2:sql = f"insert into movie_comment (id, user_name, rating, create_time, content) values ({item['id']}, '{item['user_name']}', {item['rating']}, '{item['create_time']}', '{item['content']}')"cursor.execute(sql)
db.commit()
db.close()

以上代码示例中,我们使用Python连接到本地MySQL数据库,并将去重后的数据存入到数据库中的movie_comment表中。注意,需要根据自己的数据库用户名、密码、数据库名以及数据表名进行替换。

四、实战代码示例

由于豆瓣网对爬虫有一定的反爬虫策略,为了避免被封禁IP,代码中需要加入一些反爬虫措施,如设置请求间隔、使用代理IP、伪装请求头等。

以下是一个基于Python的爬虫示例,可以爬取指定电影的所有评论用户的观影习惯数据,并保存至CSV文件中:

import requestsfrom bs4 import BeautifulSoupimport csvimport timefrom random import randintMOVIE_URL = 'https://movie.douban.com/subject/xxxxxx/' # 请替换成具体电影的URL
CSV_FILE = 'douban.csv' # CSV文件名
# 设置请求头部信息,包括User-Agent和Referer
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': MOVIE_URL,
}
# 设置代理IP列表,用于反爬虫策略
proxies = ['http://xxx.xxx.xx.xx:xxxx', 'http://yyy.yyy.yy.yy:yyyy', ...] # 请替换成实际的代理IP
# 设置请求间隔,用于反爬虫策略
WAIT_TIME = 1 # 单位为秒,可适当调整
# 定义函数获取指定URL的HTML内容def get_html(url):try:proxy = {'http': proxies[randint(0, len(proxies)-1)]} # 从代理IP列表中随机选择一个代理response = requests.get(url, headers=headers, proxies=proxy)if response.status_code == 200:return response.textexcept requests.exceptions.RequestException as e:print(e)return None
# 获取评论用户主页链接def get_user_link(comment_soup):try:user_tag = comment_soup.find('span', class_='comment-info').find('a')user_link = user_tag.get('href')return user_linkexcept:return None
# 解析评论用户主页,获取观影习惯数据def get_user_data(user_link):user_data = {}html = get_html(user_link)time.sleep(WAIT_TIME)if html:soup = BeautifulSoup(html, 'html.parser')# 获取用户常看类型try:type_tags = soup.find_all('span', class_='tags-body')type_list = [t.text.strip() for t in type_tags]user_data['type'] = ','.join(type_list)except:user_data['type'] = ''# 获取用户评分前几名的电影(除当前电影外)user_data['top_movies'] = ''try:movie_tags = soup.find_all('div', class_='info')movie_list = []for tag in movie_tags:movie_name_tag = tag.find('a', class_='title')if movie_name_tag and movie_name_tag['href'] != MOVIE_URL: # 排除当前电影movie_list.append(movie_name_tag.text)if len(movie_list) >= 5: # 最多获取前5名breakuser_data['top_movies'] = ','.join(movie_list)except:passreturn user_data
# 主函数def main():print('开始爬取...')# 获取评论列表comments = []page = 0while True:page += 1url = MOVIE_URL + 'comments?start=' + str((page-1) * 20)html = get_html(url)time.sleep(WAIT_TIME)if html:soup = BeautifulSoup(html, 'html.parser')comment_tags = soup.find_all('div', class_='comment-item')if comment_tags:comments.extend(comment_tags)else:break # 没有更多评论else:break # 请求失败# 获取每个评论用户的观影习惯数据user_data_list = []for comment in comments:user_link = get_user_link(comment)if user_link:user_data = get_user_data(user_link)user_data_list.append(user_data)print('已爬取 {} 个用户观影数据'.format(len(user_data_list)))time.sleep(WAIT_TIME)# 将数据保存至CSV文件with open(CSV_FILE, mode='w', encoding='utf-8', newline='') as f:fieldnames = ['type', 'top_movies']writer = csv.DictWriter(f, fieldnames=fieldnames)writer.writeheader()for data in user_data_list:writer.writerow(data)print('爬取完成,数据已保存至 {} 文件中。'.format(CSV_FILE))
if __name__ == '__main__':main()

需要注意的是,以上代码仅供参考,实际使用时需要根据具体情况进行调整。另外,爬虫涉及到的法律问题和道德问题需要认真考虑,不要用于非法用途或侵犯他人隐私等行为。

需要注意的几点:

1.为了避免被豆瓣网封禁IP,建议设置访问间隔时间至少为1秒
2.豆瓣网的HTML代码变化频繁,需要不断调整解析代码以适应新的HTML格式
3.爬取用户信息可能涉及到用户隐私,应严格按照相关法律法规来进行。

五、总结

爬取豆瓣网电影评论用户的观影习惯数据能够得出用户的观影时间偏好、观影类型偏好、观影评分偏好、观影影院偏好和地理位置偏好等信息。通过这些数据分析,豆瓣网能够更好地为用户推荐电影和为广告主提供更精准的广告投放服务。


关于Python的技术储备

在这里给大家分享一些免费的课程供大家学习,下面是课程里面的截图,扫描最下方的二维码就能全部领取。

1.Python所有方向的学习路线

在这里插入图片描述

2.学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
在这里插入图片描述

3.学习资料

在这里插入图片描述

4.实战资料

实践是检验真理的唯一标准。这里的压缩包可以让你再闲暇之余帮你提升你的个人能力。
在这里插入图片描述

5.视频课程

在这里插入图片描述

好啦今天的分享就到这里结束了,快乐的时光总是短暂呢,想学习更多课程的小伙伴不要着急,有更多惊喜哦~

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

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

相关文章

『C++成长记』string使用指南

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 📒2.1string类对象的常…

Sg7050ccn晶体振荡器spxo规格书

SG7050CCN是一款CMOS输出石英晶体振荡器,小体积尺寸7.0x5.0mm,四脚贴片,额定频率2.5MHz ~ 50MHz,电源电压4.5V至5.5V,工作温度范围B : -20 C to 70 C / G : -40 C to 85 C C,具有小体积轻薄型,低抖动,低功耗…

Unity打包Android,jar文件无法解析的问题

Unity打包Android,jar无法解析的问题 介绍解决方案总结 介绍 最近在接入语音的SDK时,发现的这个问题. 当我默认导入这个插件的时候,插件内部的文件夹(我下面话红框的文件夹)名字原本为GCloudVoice,这时候我…

vit细粒度图像分类(八)SIM-Trans学习笔记

1.摘要 细粒度视觉分类(FGVC)旨在从相似的从属类别中识别物体,这对人类准确的自动识别需求具有挑战性和实用性。大多数FGVC方法侧重于判别区域挖掘的注意机制研究,而忽略了它们之间的相互依赖关系和组成的整体对象结构,而这些对模型的判别信…

解锁文档处理的全新维度:ONLYOFFICE 文档开发者版

前言 相信大家对于 ONLYOFFICE 这款办公软件可能已经有所耳闻,最近因工作需要,我在众多办公协作工具中选择了 ONLYOFFICE,原因主要是它开源经济实惠,可以部署在自己的服务器上并且能够轻松集成到我们的平台中。在数字化信息时代&…

torch与cuda\cudnn和torchvision的对应

以上图片来源于这篇博客 于是,我需要手动下载0.9.0torchvision 直接在网站https://pypi.tuna.tsinghua.edu.cn/simple/后面加上torchvision,就不用ctrlF搜torchvision了,即进入下面这个网站,找到对应版本的包下载安装即可 https…

Github设置clone慢的解决方案

Github设置代理clone依然慢的解决方案 1、前提: 注意: 必须要有科学上网!必须要有科学上网!必须要有科学上网!重要的事情说三遍; 2、http/https方案(git clone时使用http)&#x…

MirrorLayer可以正常触摸屏幕原理分析

背景: 上次blog分享了给学员朋友们布置的作业,今天来进行简单的揭秘。 问题: 在多屏互动时候有一个屏幕的画面是一个MirrorLayer,另一个屏幕画面是真实的,即2个屏幕上有一个是MirrorLayer,这个时候疑问就…

【C++基础入门】四、程序流程结构(水仙花数、乘法口诀、七和七的倍数、随机数猜数字)

四、程序流程结构 C/C支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构 顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足&…

Virtual DOM的实现原理

Virtual DOM的实现原理 课程目标 了解什么是虚拟DOM,以及虚拟DOM的作用Snabbdom的基本使用(Vue内部的虚拟Dom是改造了开源库Snabbdom)Snabbdom的源码解析 在面试的时候经常会问到虚拟DOM是怎么工作的,通过查看Snabbdom源码,可以…

机器学习---半监督学习(基于分岐的方法)

1. 基于分歧的方法 与生成式方法、半监督SVM、图半监督学习等基于单学习器利用未标记数据不同,基于分歧的方 法(disagreement--based methods)使用多学习器,而学习器之间的“分歧”(disagreement)对未标记 数据的利用至关重要。 1.2 协同训练 “协同…

实验一 古典密码算法的设计与实现

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :简单外包单 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

猫什么时候发腮?猫咪发腮指南!这些生骨肉冻干发腮效果好

猫什么时候发腮是许多猫主人非常关心的问题。在猫咪的成长过程中,发腮是一项重要的体征,也是猫咪成熟的标志。主人需要在适龄的年龄段加强营养补给,可以让让猫咪拥有可爱的肉嘟嘟脸型,不要错失最佳发腮期。那么,什么时…

花瓣网美女图片爬取

爬虫基础案例01 花瓣网美女图片 网站url:https://huaban.com 图片爬取 import requests import json import os res requests.get(url "https://api.huaban.com/search/file?text%E7%BE%8E%E5%A5%B3&sortall&limit40&page1&positionsear…

【论文阅读笔记】Advances in 3D Generation: A Survey

Advances in 3D Generation: A Survey 挖个坑,近期填完摘要 time:2024年1月31日 paper:arxiv 机构:腾讯 挖个坑,近期填完 摘要 生成 3D 模型位于计算机图形学的核心,一直是几十年研究的重点。随着高级神经…

第96讲:MySQL高可用集群MHA的核心概念以及集群搭建

文章目录 1.MHA高可用数据库集群的核心概念1.1.主从复制架构的演变1.2.MHA简介以及架构1.3.MHA的软件结构1.4.MHA Manager组件的启动过程1.5.MHA高可用集群的原理 2.搭建MHA高可用数据库集群2.1.环境架构简介2.2.搭建基于GTID的主从复制集群2.2.1.在三台服务器中分别搭建MySQL实…

Prometheus 企业级监控使用总结

一、监控概念&误区 监控是管理基础设施和业务的核心工具,监控应该和应用程序一起构建和部署,没有监控,将无法了解你的系统运行环境,进行故障诊断,也无法阻止提供系统性的性能、成本和状态等信息。 误区&#xff…

法兰缺损零件设计加工替换盾构机扫描建模厂家抄数修图出CAD图纸

在现代工业生产中,法兰缺损零件的问题时有发生,这不仅会影响设备的正常运行,还会给企业带来巨大的经济损失。为了解决这一问题,CASAIM中科广电三维扫描和3D打印设计加工技术的运用成为了关键。 首先,CASAIM中科广电需要…

“与客户,共昂首”——Anzo Capital昂首资本尽释行业进取之姿

“以匠心,铸不凡” 活动的现场,Anzo Capital 作为演讲嘉宾分享“以匠心,铸不凡”的产品理念。Anzo Capital积淀九载,匠心打造出“STP”和“ECN”两大核心账户,以光之速度将交易中的订单直达市场和流动性提供商&#…

Unity通过物理带动实现传输带运输物品

前言:遇到个听起来挺简单的需求,就是实现一个传输带,传输物品。但细想发现如果是直接设置物品的速度,或者通过设置父物体的方式带动物品,都挺不好,关联性太强。最后选择用到一个很实用的API, Rigidbody.M…