编程训练: 大学计算机 实验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 **************#