首页 / PYTHON / Python高级应用程序设计任务
Python高级应用程序设计任务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python高级应用程序设计任务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5025字,纯文字阅读大概需要8分钟。
内容图文
Python高级应用程序设计任务要求
用Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)
一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
爬取最好大学网软科中国最好大学排名2019
2.主题式网络爬虫爬取的内容与数据特征分析
爬取的内容:排名、学校名称、省市、总分和指标得分【生源质量(新生高考成绩得分)】等信息。
数据特征分析:统计出每个省份各有几所学校。
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
实现思路:本次爬虫使用scrapy框架的downloader发送request请求并获取网页数据,通过spider清洗数据,使用item pipeline将获取的数据进行写入excel的操作。
技术难点:openpyxl、matplotlib、scrapy的综合使用。
二、主题页面的结构特征分析(15分)1.主题页面的结构特征 此页面如下: ?
此页面的URL如下:
http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html
请求方法为:GET
2.Htmls页面解析 通过F12查看网页源代码,下面是部分源代码的截图,红色框是我们需要获取的具体数据。
通过Elements分析可知,每一个院校都放在了一个tr中,排名在tr标签的第一个td中,学校名称在tr标签的第二个td标签中,省市在tr标签的第三个td标签中,总分在tr标签的第四个td标签中,指标得分在tr标签的第五个td中。
3.节点(标签)查找方法与遍历方法(必要时画出节点树结构) 首先通过response.xpath获取所有tr的列表(所有学校的列表),然后循环遍历这个列表,得到每一个学校的所有信息,使用xpath语法,tr/td[1]/text()获取学校排名,使用tr/td[2]/div/text()获取学校名称,使用tr/td[3]/text()获取省份,使用tr/td[4]/text()获取总分,使用tr/td[5]/text()获取指标得分。? 三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.数据爬取与采集
2.对数据进行清洗和处理
3.文本分析(可选):jieba分词、wordcloud可视化
4.数据分析与可视化
(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)
5.数据持久化
?6.附完整程序代码
本任务是使用scrapy框架完成的
best_university_spider.py中
import scrapy from china_best_university.items import ChinaBestUniversityItem class BestUniversitySpiserSpider(scrapy.Spider): name = 'best_university_spider' # 爬虫名字 start_urls = ['http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'] # 爬取初始地址 def parse(self, response): item = ChinaBestUniversityItem() all_tr_list = response.xpath('//tbody/tr') for every_td in all_tr_list: item['ranking'] = every_td.xpath('td[1]/text()').extract() # 获取排名 item['name'] = every_td.xpath('td[2]/div/text()').extract() # 获取名字 item['area'] = every_td.xpath('td[3]/text()').extract() # 获取省份 item['total_score'] = every_td.xpath('td[4]/text()').extract() # 获取总分 item['index_score'] = every_td.xpath('td[5]/text()').extract() # 获取指标得分 yield item
pipelines.py中
from collections import Counter from matplotlib import pyplot from openpyxl import Workbook list_x = [] class ChinaBestUniversityPipeline(object): def __init__(self): self.wb = Workbook() self.ws = self.wb.active self.ws.append(['排名', '学校名称 ', '省市', '总分 ', '指标得分']) def process_item(self, item, spider): line = [item['ranking'][0], item['name'][0], item['area'][0], item['total_score'][0], item['index_score'][0]] # 写入爬取的数据 self.ws.append(line) self.wb.save('bestunversity.xlsx') # 保存 list_x.append(item['area'][0]) # 爬取的数据添加到全局变量的list_x中,用于关闭爬取的close_spider时的数据分析 def close_spider(self, item): global list_x # 解包字典,获取x轴和y轴的数据列表 x = list(Counter(list_x).keys()) y = list(Counter(list_x).values()) print(Counter(list_x)) # 设置matplotlib正常显示中文和负号 pyplot.rcParams['font.sans-serif'] = ['SimHei'] pyplot.rcParams['axes.unicode_minus'] = False # 生成画布 pyplot.figure(figsize=(20, 8), dpi=80) # 画图 pyplot.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'b', 'r']) # 保存图片 pyplot.savefig('bestunarea.png') # 显示图片 pyplot.show()
settings.py中
BOT_NAME = 'china_best_university' SPIDER_MODULES = ['china_best_university.spiders'] NEWSPIDER_MODULE = 'china_best_university.spiders' USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' ROBOTSTXT_OBEY = False ITEM_PIPELINES = { 'china_best_university.pipelines.ChinaBestUniversityPipeline': 300, # 开启中间件 } LOG_LEVEL = 'WARNING'
items.py中
import scrapy class ChinaBestUniversityItem(scrapy.Item): ranking = scrapy.Field() # 排名 name = scrapy.Field() # 名称 area = scrapy.Field() # 省份 total_score = scrapy.Field() # 总分 index_score = scrapy.Field() # 指标得分
最后:打开terminal,输入scrapy crawl best_university_spider,回车,然后我们所想要的结果就有了。
中间省略
? ? 四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论? 可以得到这些结论:中国最好的大学在北京有39所,江苏有37所,河南有30所等。
2.对本次程序设计任务完成的情况做一个简单的小结。 通过这次作业,我知道了自己真的欠缺太多了。为了完成这次任务,进行了自学,查阅资料,请教同学和朋友,做了一遍又一遍,还爬取了两个例子,主要是在代码编写的过程中遇到很多问题。提交格式先在Word中进行草稿,最后才在博客园中进行提交。不过也收获了很多,首先对scrapy框架的整体有了一个充分的认识;其次对数据分析的作用有了深刻的了解,真正了解了数据分析的意义;最后,对于python操作excel的模块进行了系统的学习,这在今后的工作中是可以充分利用的。
内容总结
以上是互联网集市为您收集整理的Python高级应用程序设计任务全部内容,希望文章能够帮你解决Python高级应用程序设计任务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。