.

(一)实验要求

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.引入所需要的库

PYTHON课程性质目的与任务 python课程设计要求_PYTHON课程性质目的与任务

 

  2.爬取直播平台的相关数据,包括直播间热度、网址、直播用户名、直播标题

PYTHON课程性质目的与任务 python课程设计要求_Python_02

 

 

PYTHON课程性质目的与任务 python课程设计要求_PYTHON课程性质目的与任务_03

 


 

二、将所得数据写成csv文件

PYTHON课程性质目的与任务 python课程设计要求_数据_04

 


 

三、Pycharm成果展示,同时生成csv文件

PYTHON课程性质目的与任务 python课程设计要求_html_05

 

 

PYTHON课程性质目的与任务 python课程设计要求_html_06

 

四、在华为ESC服务器上运行

1.登录winscp并将代码传上去

PYTHON课程性质目的与任务 python课程设计要求_html_07

 

 2.在putty上运行

PYTHON课程性质目的与任务 python课程设计要求_html_08

 

 

附:实验源代码

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课程设计要求_数据_09

 


虽然后来随着教学的逐渐深入,自己有点跟不上,但通过同学们的帮助我也能够解决大部分的问题。

其实起初自己对编程并不感兴趣,选Python也并不是因为喜欢,而是觉得大家都选了,自己不选感觉比别人少学了东西。但是出乎我意料的是王老师上课非常风趣幽默,自己学起来也不排斥,或者说觉得厌烦。虽然很多作业对我来说都有难度,但还是会认认真真的去完成。

总的来说,Python这门选修课带给我的惊喜很多,成长也很多,自己以后空闲时间也会继续去学习了解一些有关的知识。

3.课堂建议:王老师讲课最吸引我的一点就是幽默风趣,教学不死板,总是能够吸引我的注意力。但可能是自己太垃圾了(捂脸),个人感觉老师上课讲课的速度稍微有一点点快,自己总是跟不上老师敲代码。对于我这样的小白来说,学起来比较吃力(哭)。所以老师讲课速度可以稍稍慢一点,或者在课后把上课敲的代码和PPT发到班群里,有需要的同学可以再学习学习。