爬虫实训——使用python爬取大学排名并且存入数据库及推荐系统

由于原始代码已经提供了一个很好的实践案例,我们可以基于这个案例简化和改进代码,以解决问题中提出的需求。以下是一个简化后的代码实例,包含了存储数据到数据库和使用推荐系统的核心函数:




import requests
from bs4 import BeautifulSoup
import pymysql
import pandas as pd
from surprise import Dataset, Reader, SVD
from surprise.model_selection import train_test_split
from surprise import SVD
 
# 连接数据库
conn = pymysql.connect(host='localhost', user='your_username', password='your_password', db='your_dbname', charset='utf8')
 
# 使用pandas读取数据库数据
def read_from_db():
    df = pd.read_sql_query('SELECT * FROM university_ranking', conn)
    return df
 
# 将数据存入数据库
def save_to_db(data):
    data.to_sql('university_ranking', conn, if_exists='append', index=False)
 
# 创建推荐系统
def create_recommender_system(data):
    reader = Reader(rating_scale=False)
    data = Dataset.load_from_df(data[['university', 'score']], reader)
    trainset, testset = train_test_split(data, test_size=0.25)
    svd = SVD()
    svd.fit(trainset)
    return svd
 
# 获取大学排名
def get_university_ranking():
    url = 'http://www.shanghairanking.cn/rankings/bcur/2020'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    table = soup.find('table', attrs={'class': 'table-stats'})
    rows = table.find_all('tr')[1:]  # 跳过表头
 
    universities = []
    scores = []
    for row in rows:
        tds = row.find_all('td')
        universities.append(tds[1].text)
        scores.append(tds[2].text.replace(',', ''))  # 移除千分位分隔符
 
    df = pd.DataFrame({'university': universities, 'score': scores})
    return df
 
# 执行函数
def main():
    df = get_university_ranking()
    save_to_db(df)
    df_from_db = read_from_db()
    svd = create_recommender_system(df_from_db)
    # 推荐系统使用示例
    # 用户ID, 获取推荐学校
    user_id = 0
    recommendations = svd.recommend(user_id, n=3)
    for recommendation in recommendations:
        print(f"Recommendation for user ID {user_id}: {recommendation.item_id} with score: {recommendation.score}")
 
if __name__ == "__main
最后修改于:2024年08月16日 10:37

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日