码迷,mamicode.com
首页 > 编程语言 > 详细

Python 高级应用程序设计任务

时间:2019-12-21 15:33:56      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:barplot   可视化   column   检查   encoding   word   难点   lis   图片   

一.主题式网络爬虫设计方案

1.主题式网络爬虫的名称

爬拥有超级计算机500强的公司和数量

2·主题式网络爬虫的内容与数据特征分析

 爬虫的内容:超级计算机500强

 数据特征分析:对前500强超级计算机的品牌公司进行分析

3,主题式网络爬虫设计方案概述(包括实现思路和技术难点)

 设计方案:创建一个get的类,通过get_page爬取网页,在通过parse_page_detail()获取每个详情页所需要爬取的具体信息数据,最后通过save_to_csv()保存到csv文件中。

 技术难点:网址的抓包和正文的提取

二,主题页面的结构特征分析

1,主题页面的特征结构

 

 每页数据有100条数据,共5页,数据总量为500条,通过F12检查页面,发现所需要爬取的数据都是静态的。

2.Htmls页面解析

技术图片

3.节点(标签)查找方法与遍历方法
(必要时画出节点树结构)

三、网络爬虫程序设计(60分)

爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.数据爬取与采集

2.对数据进行清洗和处理

 1 import requests
 2 import json
 3 from lxml import etree
 4 import seaborn as sns
 5 import pandas as pd
 6 
 7 base_url = http://www.mtime.com/top/movie/top100/
 8 config_headers = {
 9     Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9,
10     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
11 }
12 
13 #数据爬取
14 def get_page(page_count):
15     res = requests.get("https://www.top500.org/list/2019/11/?page={0}".format(page_count), headers = config_headers)
16     return res.content.decode(utf-8)
17 
18 def parse(data):
19     html = etree.HTML(data)
20     with open(a, w, encoding=utf-8) as f:
21         f.write(data)
22     computer_list = html.xpath("//table/tr")
23     return [parse_item(item) for item in computer_list]
24 
25 #数据清洗
26 def parse_item(item):
27     d = {}
28     d[rank] = item.xpath(string(./td[1]))
29     d[country] = item.xpath(./td[2]/text())
30     d[company] = item.xpath(./td[3]/text())
31     d[name] = item.xpath(string(./td[3]/a/b))
32     d[cores] = item.xpath(./td[4]/text())
33     d[rmax] = item.xpath(./td[5]/text())
34     for key, v in d.items():
35         if isinstance(v, list) and len(v) > 0:
36             d[key] = v[0]
37     return d
38 
39 
40 parse_data = []
41 for i in range(1, 6):
42     data = get_page(i)
43     clear_data = parse(data)
44     parse_data.extend(clear_data)
45 
46 pd.DataFrame(parse_data).to_csv(data.csv)
47 
48 def get_column(dc, column_name):
49     return ,.join([item[column_name] for item in dc])

4.数据分析与可视化
(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 import seaborn as sns
 4 
 5 f = open(data.csv,encoding=UTF-8)
 6 data = pd.read_csv(f,sep=,,header=None,encoding=UTF-8,names=[rank,country,company,name,ores,rmax])
 7 
 8 #各国家拥有超级电脑数量
 9 country = data[country].value_counts()
10 sns.set_style("darkgrid")
11 bar_plot = sns.barplot(x=(country.index),y=country.values, palette="muted")
12 plt.xticks(rotation=90)
13 plt.show()

技术图片

每个国家拥有超级计算机的数量

 1 import matplotlib.pyplot as plt
 2 from wordcloud import WordCloud
 3 import pandas as pd
 4 
 5 f = open(data.csv,encoding=UTF-8)
 6 data = pd.read_csv(f,sep=,,header=None,encoding=UTF-8,names=[rank,country,company,name,ores,rmax])
 7 
 8 def draw_country_wordcloud():
 9     country_str = ",".join(data[country])
10     #生成国家词云
11     country_wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(country_str)
12     #生成公司词云
13     plt.imshow(country_wordcloud)
14     plt.axis("off")
15     plt.show()
16     country_wordcloud.to_file(country_wordcloud.png)
17 
18 def draw_company_wordcloud():
19     company_str = ",".join(data[company])
20     company_wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(company_str)
21     plt.imshow(company_wordcloud)
22     plt.axis("off")
23     plt.show()
24     company_wordcloud.to_file(country_wordcloud.png)
25 
26 
27 draw_country_wordcloud()

技术图片

国家的词云

技术图片

 

 品牌词云

 

四、结论(10分)

1.经过对主题数据的分析与可视化,可以得到哪些结论?

①在世界上拥有超级电脑的国家中,中国远超美国成为拥有最多超级电脑的国家。

②中国华为拥有超级电脑的能力。

③在超级电脑的领域,欧洲国家的公司占了很大一部分

2.对本次程序设计任务完成的情况做一个简单的小结。

在这次Python爬虫的过程中我学到了很多在实践中才会遇到的问题,在这次的爬虫中我用到了Xpath。这让我在学习过后的到了很好的复习和巩固,利用好python我们可以爬到很多有用的点,比如说这次我可以爬到超级电脑的国家,品牌和每个国家的数量。并利用可视化很清晰的展示出差别。

Python 高级应用程序设计任务

标签:barplot   可视化   column   检查   encoding   word   难点   lis   图片   

原文地址:https://www.cnblogs.com/wxc9865/p/12057541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!