佛系程序员
首页
栏目
标签
归档
关于
友链
佛系程序员
首页
栏目
标签
归档
友链
关于
利用AI高效完成数据爬取与数据库更新
学习笔记
网站开发
发布日期: 2025-04-03 18:23:51
喜欢量: 5 个
阅读次数:
57
chatGPT+Trae
## 项目背景 最近在开发一个运势测算平台,其中包含"诸葛神算384签"功能模块。每个签文都有详细的签文内容和解签说明,但缺少一个关键信息——这个签是"上签"、"中签"还是"下签"的标识。为了完善这个功能,我需要为每个签文添加这个分类标识。 ## 技术实现过程 ### 第一步:寻找数据源 经过搜索,我发现一个包含完整诸葛神签数据的网页:[中华瑰宝之-易经-诸葛神签](http://songroger.win/zhu-ge/) 这个页面包含了所有384签的完整信息,包括每签的分类(如上上签、中签等)。 ### 第二步:编写爬虫获取数据 我决定使用Python编写爬虫来提取这些分类信息。通过与ChatGPT的交互,快速获得了以下爬虫代码: ```python import requests from bs4 import BeautifulSoup import re # 目标URL url = "http://songroger.win/zhu-ge/" # 发送请求获取网页内容 headers = {"User-Agent": "Mozilla/5.0"} response = requests.get(url, headers=headers) response.encoding = response.apparent_encoding # 解析HTML soup = BeautifulSoup(response.text, "html.parser") # 获取 class="article" 内的所有 <p> 标签 article = soup.find("article", class_="article") # 存储签文数据 signs = [] if article: for p in article.find_all("p"): strong = p.find("strong") # 获取 <strong> 标签 em = p.find("em") # 获取 <em> 标签 if strong and em: title = strong.text.strip() sign_text = em.text.strip() # 只提取【上上签】、【中签】、【下签】等 match = re.search(r"【(.+?)签】", sign_text) sign_type = match.group(1) if match else "未知" signs.append(f"{title}: {sign_type}签") # 将数据保存到文件 with open("zhuge_signs.txt", "w", encoding="utf-8") as file: file.write("\n".join(signs)) print("数据已保存到 zhuge_signs.txt") ``` 这段代码可以: 1. 抓取目标网页内容 2. 解析HTML结构 3. 提取每签的分类信息 4. 将结果保存到zhuge_signs.txt文件中 ### 第三步:设计数据库更新方案 获取到数据后,我需要将这些分类信息更新到数据库中。我的方案是: 1. 在zhuge表中新增sign_level字段 2. 编写一个接口按顺序将txt文件中的分类信息更新到数据库 通过与AI助手的多次交互,最终确定了以下实现代码: ```python @router.get("/update_zhuge_levels") @require_login def update_zhuge_levels(request: Request, db: Session = Depends(get_db)): """ 更新诸葛神签等级 """ try: # 读取签文等级文件 with open('zhuge_signs.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 获取所有诸葛神签记录,按sign_number排序 zhuge_list = db.query(ZhugeModel).order_by(ZhugeModel.sign_number).all() # 一一对应更新 for i, zhuge in enumerate(zhuge_list): if i < len(lines): sign_level = lines[i].strip().split(':')[1].strip() zhuge.sign_level = sign_level print(f"更新第{i+1}签等级为:{sign_level}") db.commit() return {"code": 200, "message": "诸葛神签等级更新成功"} except Exception as e: db.rollback() return {"code": 500, "message": f"更新失败: {str(e)}"} ``` ### 第四步:执行更新 使用方法很简单: 1. 确保zhuge表中已添加sign_level字段 2. 将zhuge_signs.txt放在正确位置 3. 访问http://127.0.0.1:8000/backend/update_zhuge_levels ## 经验总结 1. **明确需求是关键**:在与AI交互时,清晰地表达需求能大大提高效率。比如一开始就应该说明需要将结果保存到文件。 2. **简化逻辑**:最初尝试将"第一签"等中文数字转换为数字ID,后来发现直接按顺序匹配更简单可靠。 3. **逐步验证**:在实现过程中,通过打印中间结果和抽样检查确保数据准确性。 4. **AI辅助开发**:合理利用AI工具可以大幅提升开发效率,特别是在数据抓取和简单逻辑实现方面。 ## 后续优化方向 1. 添加异常处理机制,确保数据一致性 2. 实现增量更新功能,避免全量更新 3. 考虑添加数据校验机制,确保签文和分类匹配正确 这个案例展示了如何利用AI工具快速完成数据采集和处理任务,将原本可能需要数小时的工作压缩到几分钟内完成。
文章作者:
yyii
文章链接:
https://amtb.info/show/MTQ4
版权声明:
本博客所有文章除特別声明外,转载请注明来源
佛系程序员
!
分享:
搜索