当前位置: 首页 > news >正文

编程训练: 大学计算机 实验4 爬虫、人工智能基础

第1关:requests 基础
任务描述
本关任务:编写一个 requests 请求网页的程序。

相关知识
为了完成本关任务,你需要掌握:requests 的安装和 requests 的常用方法。

requests 的安装
我们之前介绍了 urllib 库的使用,它是作为爬虫入门工具来介绍的,对新手理解 Python 爬虫的整个流程很有帮助。在掌握了爬虫基本思想流程后,就需要引入更高级的工具来提高我们的开发效率,这里就开始给大家介绍 requests 库的使用。

如果本地 Python 环境没有安装 requests,可以在命令提示符窗口输入命令pip install requests,安装 requests 模块,如下图所示。

测试答案:

importrequests def get_html(url):''' 两个参数 :param url:统一资源定位符,请求网址 :param headers:请求头 :return:html'''# ***************** Begin ******************** ## 请补充请求头headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}# get请求网页response=requests.get(url,headers=headers)# 获取网页信息文本html=response.text# ***************** End ******************** #returnhtml

第2关:requests 进阶
任务描述
本关任务:使用 session 编写爬取网页的小程序。

相关知识
为了完成本关任务,你需要掌握:cookie 与 session 的使用。

cookie的使用
当你浏览某网站时,Web 服务器会修改修改你电脑上的 Cookies 文件,它是一个非常小的文本文件,可以记录你的用户 ID 、密码、浏览过的网页、停留的时间等信息。 当你再次来到该网站时,网站通过读取 Cookies 文件,得知你的相关信息,从而做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入 ID、密码就直接登录等等。

下面演示如何在 requests 中使用 Cookies, 以百度搜索为例,在开发者工具查看请求头信息如下:

测试答案:

importrequests def get_html(url):''' 两个参数 :param url:统一资源定位符,请求网址 :param headers:请求头 :return html 网页的源码 :return sess 创建的会话'''# ***************** Begin ******************** ## 补充请求头headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}# 创建Sessionsess=requests.session()# 使用Session的get请求网页response=sess.get(url,headers=headers)# 获取网页信息文本html=response.text# ****************** End ********************* #returnhtml, sess

第3关:鸢尾花识别

任务描述
本关任务:使用sklearn完成鸢尾花分类任务。

相关知识
为了完成本关任务,你需要掌握如何使用sklearn提供的DecisionTreeClassifier。

数据简介

鸢尾花数据集是一类多重变量分析的数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类(其中分别用0,1,2代替)。

数据集中部分数据与标签如下图所示:

测试答案:

importpandas as pd from sklearn.treeimportDecisionTreeClassifier#********* Begin *********##读取训练集数据train_df=pd.read_csv('./step5/train_data.csv').as_matrix()#读取训练标签数据train_label=pd.read_csv('./step5/train_label.csv').as_matrix()#读取测试集数据test_df=pd.read_csv('./step5/test_data.csv').as_matrix()#建立DecisionTreeClassifier对象dt=DecisionTreeClassifier()#训练模型dt.fit(train_df, train_label)result=dt.predict(test_df)result=pd.DataFrame({'target':result})#保存测试集的预测结果result.to_csv('./step5/predict.csv',index=False)#********* End *********#

第4关:手写数字识别
任务描述
本关任务:使用sklearn中的LogisticRegression类完成手写数字识别任务。

相关知识
为了完成本关任务,你需要掌握如何使用sklearn提供的LogisticRegression类。

数据简介
本关使用的是手写数字数据集,该数据集有 1797 个样本,每个样本包括 8*8 像素(实际上是一条样本有 64 个特征,每个像素看成是一个特征,每个特征都是float类型的数值)的图像和一个 [0, 9] 整数的标签。比如下图的标签是 2 :

sklearn为该数据集提供了接口,若想使用该数据集,代码如下:

from sklearnimportdatasetsimportmatplotlib.pyplot as plt#加载数据集digits=datasets.load_digits()#X表示图像数据,y表示标签X=digits.data y=digits.target#将第233张手写数字可视化plt.imshow(digits.images[232])

测试答案:

from sklearn.linear_modelimportLogisticRegression def digit_predict(train_image, train_label, test_image):''' 实现功能:训练模型并输出预测结果 :param train_sample: 包含多条训练样本的样本集,类型为ndarray,shape为[-1,8,8]:param train_label: 包含多条训练样本标签的标签集,类型为ndarray :param test_sample: 包含多条测试样本的测试集,类型为ndarry :return: test_sample对应的预测标签'''#************* Begin ************## 训练集变形flat_train_image=train_image.reshape((-1,64))# 训练集标准化train_min=flat_train_image.min()train_max=flat_train_image.max()flat_train_image=(flat_train_image - train_min)/(train_max - train_min)# 测试集变形flat_test_image=test_image.reshape((-1,64))# 测试集标准化test_min=flat_test_image.min()test_max=flat_test_image.max()flat_test_image=(flat_test_image - test_min)/(test_max - test_min)# 训练--预测logreg=LogisticRegression(C=4.0,solver='lbfgs',max_iter=100)logreg.fit(flat_train_image, train_label)returnlogreg.predict(flat_test_image)#************* End **************#
http://www.jsqmd.com/news/1407383/

相关文章:

  • AI Agent Skill实现播客到小红书图文自动创作:工作流拆解与开源实践
  • Linux PipeWire深度解析之pw_properties_serialize_dict调用流程与实战(六十六)
  • 智能体环路工程实战:从理论到生产的Agent核心循环构建
  • 政企专网通信项目避坑指南:从选型、资质到后期运维
  • 在宜昌开公司十年,我们最懂老板们财税背后的不容易 - 二格
  • AI Agent权限管理:如何让执行身份与权限状态进入模型上下文
  • Git Push与Pull核心原理:从本地仓库到远程协作的完整指南
  • Excalidraw本地化部署实战:从Docker到生产环境的私有白板搭建
  • 80-版本列表分页与历史治理:为什么版本越多越要重视列表管理
  • 编程练习: 程序设计基础(python)实验一顺序结构程序设计
  • Failed to take /etc/passwd lock: Invalid argument解决方案
  • Hall 定理学习笔记 P10208 [JOI 2024 Final] 礼物交换 解题报告
  • 2024显示器接口终极指南:HDMI、DP、USB-C如何选?
  • DigitalOcean上LLM应用提示词缓存实战:成本降低40%,延迟优化至毫秒级
  • 湖北嘉柏财税服务有限公司收费标准:代账价格与服务明细全公开 - 二格
  • Axios网络错误ERR_CONNECTION_REFUSED:从TCP原理到实战排查指南
  • 企业数智化系统导入方法论:四阶十二步法
  • Android 12+后台FGS启动限制解析与适配实战
  • 简单到家在成都的服务怎么样?真实用户评价汇总 - 简单到家
  • 浏览器并发请求限制:从HTTP/1.1瓶颈到HTTP/2多路复用的性能优化实战
  • Spring AI Alibaba 入门开发1-环境搭建、ollama部署、Chat和ChatModel、流式输出
  • 爬虫IP频繁被封?从代理IP选型到行为优化的完整破局指南
  • Mac触控板深度调校指南:从基础设置到高效手势全解析
  • OoderAgent-Skills:构建AI技能生态的通用接口与协议规范
  • 2026 最新:从 0 开始将 Java 项目发布到 Maven Central
  • Spring AI Alibaba 入门开发2-提示词功能、提示词模板、格式化输出
  • AI Agent界顶顶大名的Pi是如何设计实现的?
  • 第 9 篇:「Fluss 运维实战」—— 部署、监控与故障排查
  • 前端模块化重构:无构建工具下拆分巨石HTML的4步瘦身术
  • Gerrit合并冲突解决:从原理到实战的完整指南