Python高级应用程序设计任务要求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python高级应用程序设计任务要求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4525字,纯文字阅读大概需要7分钟。
内容图文
![Python高级应用程序设计任务要求](/upload/InfoBanner/zyjiaocheng/649/102e967c22174d1a9b6c6554f7e9a676.jpg)
一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
网易云歌曲排行榜歌曲时长
2.主题式网络爬虫爬取的内容与数据特征分析
主要是爬取网易云里面的歌名,歌手和歌曲时长。
对网易云歌曲的时长做一个可视化表格。
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
实现思路:利用requests的get方法访问网站。
用xpath方法解析网页原码。
技术难点:需要下载最新版本的谷歌,还需要安装谷歌的驱动否则运行不出来。
二、主题页面的结构特征分析(15分)
1.主题页面的结构特征
2.Htmls页面解析
3.节点(标签)查找方法与遍历方法
(必要时画出节点树结构)
根据F12中的数据查找到相应位置并requests.get(),再利用正则找到正确的数据并保存起来
三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.数据爬取与采集
爬取的代码如下:
from lxml import etree from selenium import webdriver import pandas as pd class WangyiMusic(): # 请求的地址 云音乐飙升榜 url = "https://music.163.com/#/discover/toplist?id=19723756" def __init__(self): #选择浏览器驱动 chromedriver.exe self.browser = webdriver.Chrome(executable_path="D:\python\chromedriver.exe") if self.get_HTML(): self.parse_HTML() #由于页面的歌曲信息都存放在页面的ifram里面,所以采用Selenium进入子页面获得源码 def get_HTML(self): #使用get方法访问网站 self.browser.get(self.url) self.browser.switch_to_frame('contentFrame') iframe = self.browser.page_source return iframe #用xpath方法解析网页原码 def parse_HTML(self): iframe = self.get_HTML() html = etree.HTML(iframe) try: #获取排名 num = html.xpath('//td/div/span[@class = "num"]/text()') #获取歌名 song = html.xpath('//td//div/span[@class="txt"]/a/b/@title') #获取歌手 singer = html.xpath('//td/div[@class = "text"]/@title') #获取歌曲时长 time = html.xpath('//td[@class = " s-fc3"]/span[@class = "u-dur "]/text()') #DataFrame列名 columns_list = ['歌名','歌手','时长'] #将歌名、歌手和时长用zip函数转换成一个列表数据类型 data = list(zip(song,singer,time)) #用排名做行索引 index_list = num #转换成DataFram数据 dataFrame = pd.DataFrame(data,index = index_list,columns = columns_list) #避免多次运行爬取,将数据存入csv文件中,做后续的数据分析 dataFrame.to_csv(".wangyiMusic.csv") return dataFrame except Exception as e: print('解析失败!',e.args) object = WangyiMusic() print(object.parse_HTML())
运行结果如下:
2.对数据进行清洗和处理
#输出网易云数据文件的前5行 data=pd.DataFrame(pd.read_csv('./wangyiMusic.csv')) data.head()
#删除无效列 data.drop(1,axis=0,inplace=True) data.head()
#查找重复值 data.duplicated()
#删除重复值 data=data.drop_duplicates() data.head()
#空值处理 data['歌名'].isnull().value_counts()
#异常值处理 data.describe()
3.文本分析(可选):jieba分词、wordcloud可视化
4.数据分析与可视化
(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)
5.数据持久化
6.附完整程序代码
from lxml import etree from selenium import webdriver import pandas as pd class WangyiMusic(): # 请求的地址 云音乐飙升榜 url = "https://music.163.com/#/discover/toplist?id=19723756" def __init__(self): #选择浏览器驱动 chromedriver.exe self.browser = webdriver.Chrome(executable_path="D:\python\chromedriver.exe") if self.get_HTML(): self.parse_HTML() #由于页面的歌曲信息都存放在页面的ifram里面,所以采用Selenium进入子页面获得源码 def get_HTML(self): #使用get方法访问网站 self.browser.get(self.url) self.browser.switch_to_frame('contentFrame') iframe = self.browser.page_source return iframe #用xpath方法解析网页原码 def parse_HTML(self): iframe = self.get_HTML() html = etree.HTML(iframe) try: #获取排名 num = html.xpath('//td/div/span[@class = "num"]/text()') #获取歌名 song = html.xpath('//td//div/span[@class="txt"]/a/b/@title') #获取歌手 singer = html.xpath('//td/div[@class = "text"]/@title') #获取歌曲时长 time = html.xpath('//td[@class = " s-fc3"]/span[@class = "u-dur "]/text()') #DataFrame列名 columns_list = ['歌名','歌手','时长'] #将歌名、歌手和时长用zip函数转换成一个列表数据类型 data = list(zip(song,singer,time)) #用排名做行索引 index_list = num #转换成DataFram数据 dataFrame = pd.DataFrame(data,index = index_list,columns = columns_list) #避免多次运行爬取,将数据存入csv文件中,做后续的数据分析 dataFrame.to_csv(".wangyiMusic.csv") return dataFrame except Exception as e: print('解析失败!',e.args) object = WangyiMusic() print(object.parse_HTML())
四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
结论:
大部分的歌曲时长都集中在3-4分钟之间。
隔壁老樊,小鬼和华晨宇等歌手比较受听众喜爱。
2.对本次程序设计任务完成的情况做一个简单的小结。
由于自己知识的缺乏在进行实操出现各种各样的错误,不断翻阅书籍才补缺补漏将代码写好。这次的作业让我python更进一步的了解也更加深了我的知识,是一次很好的学习过程。
内容总结
以上是互联网集市为您收集整理的Python高级应用程序设计任务要求全部内容,希望文章能够帮你解决Python高级应用程序设计任务要求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。