.
(一)实验要求
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
批阅:注意本次实验不算做实验总分,前三个实验每个实验10分,累计30分。本次实践算入综合实践,打分为25分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分
(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。
注意:每个人的实验不能重复,课代表先统计大家做的内容并汇总,有重复的需要自行协商。
(二)实验内容
爬虫爬取虎牙直播平台相关数据
(三)实验过程及结果
一、利用Python的requests库和BeautifulSoup库编写代码对网页数据进行爬取
1.引入所需要的库
2.爬取直播平台的相关数据,包括直播间热度、网址、直播用户名、直播标题
二、将所得数据写成csv文件
三、Pycharm成果展示,同时生成csv文件
四、在华为ESC服务器上运行
1.登录winscp并将代码传上去
2.在putty上运行
附:实验源代码
import requests
from bs4 import BeautifulSoup
url = 'https://www.huya.com/l'
headers = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
}
r = requests.get(url,headers = headers)
r.raise_for_status()
r.encoding = 'utf-8'
html = BeautifulSoup(r.text,'html.parser')
a = html.find_all('a',class_ ='recomend-item j_sidebar-recomend-item')
urls1 = []
urls2 = []
urls3 = []
urls4 = []
urls1.append('热度(万)')
urls2.append('网址')
urls3.append('直播间')
urls4.append('直播标题')
urls=[]
for i in a:
href = i['href']
title = i['title']
#print(href,title)
urls.append([href,title])
for url in urls:
r = requests.get(url[0],headers = headers)
r.raise_for_status()
r.encoding = 'utf-8'
html = BeautifulSoup(r.text,'html.parser')
a = html.find_all('li',class_ = 'game-live-item')
print(url[1])
for i in a:
num = i.select('i',class_ = 'js-num')[3].text
num = num.replace('万','')
title = i.select('img')[0]['alt']
href = i.select('a')[1]['href']
title1 = i.select('a')[1]['title']
urls1.append(num)
urls2.append([href])
urls3.append([title])
urls4.append([title1])
urls1_set = set(urls1)
import csv
with open('example.csv', 'w',encoding = 'utf-8',newline='') as f:
writer = csv.writer(f)
for i in range(len(urls1_set)):
writer.writerow([urls1[i],urls2[i],urls3[i],urls4[i]])
(四)实验过程中遇到的问题
问题1无法下载requests库
解决办法:上网查询后发现是自己pip版本太低,进行了更新
问题2在putty上运行时发现包没有导过去,无法运行
解决问题:在同学的帮助下解决
(五)结课感想与建议
1.课堂总结:输入输出,基本数据类型:整数类型,四种进制表示形式、浮点类型,字符串类型正向递增序号、反向递减序号,索引和切片[ : ],字符串的操作符,字符串处理函数,字符串处理”方法”字符串类型格式化,python的分支语句(分支结构)if elif else 和循环语句(循环结构)while for continue break,集合与字典,集合间的运算,函数,def return 代码复用和封装,面向对象程序设计 三要素:封装、继承、多态, 对象、类
2.结课感想:其实当初选修Python是因为听说Python比较简单,操作比较方便,而自己又是一个变成小白,之前从未接触过编程代码。然后我就想着既然Python比较简单的话,对于我这样的小白来说可能比较友善,更好掌握。本着多掌握一门技术的心态,我选择了Python。但等我开始学的时候,才发现原来这门课并没有我想象中的那么简单,更糟糕的是,本学期我还有必修课C语言,在刚开始学的时候,偶尔还会把两者弄混。但通过王老师的倾囊相授和自己不断地学习,我也开始渐渐了解Python。我还记得当时在老师的带领下第一次敲出一个猜数的小游戏时,自己惊喜的心情。(当时拍的照片我还留着)
虽然后来随着教学的逐渐深入,自己有点跟不上,但通过同学们的帮助我也能够解决大部分的问题。
其实起初自己对编程并不感兴趣,选Python也并不是因为喜欢,而是觉得大家都选了,自己不选感觉比别人少学了东西。但是出乎我意料的是王老师上课非常风趣幽默,自己学起来也不排斥,或者说觉得厌烦。虽然很多作业对我来说都有难度,但还是会认认真真的去完成。
总的来说,Python这门选修课带给我的惊喜很多,成长也很多,自己以后空闲时间也会继续去学习了解一些有关的知识。
3.课堂建议:王老师讲课最吸引我的一点就是幽默风趣,教学不死板,总是能够吸引我的注意力。但可能是自己太垃圾了(捂脸),个人感觉老师上课讲课的速度稍微有一点点快,自己总是跟不上老师敲代码。对于我这样的小白来说,学起来比较吃力(哭)。所以老师讲课速度可以稍稍慢一点,或者在课后把上课敲的代码和PPT发到班群里,有需要的同学可以再学习学习。