Python⽹络爬⾍———现存疫情数据爬取及分析
⼀、选题的背景
为什么要选择此选题?
由于疫情原因的影响,世界各地都因为新型冠状病毒(简称新冠肺炎)⽽陷⼊种种危机。因此,对于现存国内的疫情数据我进⾏了⼀个爬取和⼀些数据分析,更加直观的查看出国内现存疫情的情况。
让现在在社会上经常流通的⼈们加强防范意识,了解现存哪些地区风险较⾼,出⾏进⾏防护。在外出差、⾛⽣意的⼈也更加了解到各地的疫情情况,尽量避免⾼危地区出⾏!
数据来源:⼀点资讯。
⽹址:
⼆、主题式⽹络爬⾍设计⽅案
1.主题式⽹络爬⾍名称
Python⽹络爬⾍———现存疫情数据爬取及分析
2.主题式⽹络爬⾍爬取的内容与数据特征分析
爬取现存疫情数据并进⾏绘图
3.主题式⽹络爬⾍设计⽅案概述
先确定主题,爬取现存疫情数据,设计爬取程序进⾏爬取,并以csv形式储存,然后利⽤pandas库进⾏数据分析和清洗,再利⽤Matplotlib与seaborn等库进⾏图形图像绘制。最后保存数据。
三、主题页⾯的结构特征分析
1.主题页⾯的结构与特征分析
⾸页与信息集
2.Htmls 页⾯解析
数据集页⾯Htmls定位
单条数据集Htmls定位
单个数据Htmls定位
四、⽹络爬⾍程序设计
1.数据爬取与采集
1#导⼊库
2import requests
3from lxml import etree
4import time
5import re
6import pandas as pd
用html设计一个疫情网页代码7
8# 初始化空列表
9 dm_lis, xcqz_lis, ljqz_lis, zy_lis, sw_lis = [], [], [], [], []
10
11#爬取⽹站的⽹址
12 url = "heytap.yidianzixun/article/0SosIrBo?__source__=yidian&s=heytap&appid=heytap2&__styleType__=3&expose_type=manual"
13
14# 设置请求头
15 headers = {
16"user - agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 91.0.4472.101Safari / 537.36Edg / 91.0.864.48"
17 }
18# requests请求链接
19 responce = (url=url,headers=headers).text
20# 使⽤lxml模块中的etree⽅法讲字符串转化为html标签
21 html = etree.HTML(responce)
22
23# ⽤xpath定位标签位置
24 lis = html.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr')
25
26# 获取要爬取内容的详情链接
27for li in lis:
28#爬取地区
29 dm = li.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr[1]/td[1]/text()')[0]
30#爬取现存确诊
31 xcqz = li.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr[1]/td[2]/text()')[0]
32#爬取累计确诊
33 ljqz = li.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr[1]/td[3]/text()')[0]
34#爬取治愈⼈数
35 zy = li.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr[1]/td[4]/text()')[0]
36#爬取死亡⼈数
37 sw = li.xpath('//*[@id="preview-topic-container"]/div[3]/table/tbody/tr[1]/td[5]/text()')[0]
38
39# 输出
40print(dm)
41print(xcqz)
42print(ljqz)
43print(zy)
44print(sw)
45# 将字段存⼊初始化的列表中
46 dm_lis.append(dm)
47 xcqz_lis.append(xcqz)
48 ljqz_lis.append(ljqz)
49 zy_lis.append(zy)
50 sw_lis.append(sw)
51
52 df = pd.DataFrame({
53"地名": dm_lis,
54"现存确诊": xcqz_lis,
55"累计确诊": ljqz_lis,
56"治愈": zy_lis,
57"死亡": sw_lis,
58 })
59#输出csv⽂件
60 df.to_csv("yiqingshuju.csv", encoding='utf_8_sig', index=False)
爬取成功后会在当前⽂件路径下输出⼀个csv⽂件
2.对数据进⾏清洗和处理
(1)先导⼊数据集
1#导⼊库
2import numpy as np
3import pandas as pd
4import matplotlib.pyplot as plt
5import seaborn as sns
6import matplotlib.pyplot as plt
7import seaborn as sns
8# 导⼊数据集
9
10 yqfx = pd.ad_csv('yiqingshuju.csv')) 11
12 yqfx.head()
显⽰截图
(2)查看统计信息,了解⼤致特征
1#查看统计信息,了解⼤致特征
2 yqfx.describe()
(3)空值与缺失值处理
1#空值与缺失值处理
2 yqfx['地区'].isnull().value_counts()
效果截图
(4)删除重复值
1#删除重复值
2 yqfx.duplicated()
3 yqfx=yqfx.drop_duplicates()
4 yqfx.head()
效果代码
3.数据分析与可视化
(1)绘制各地数据的折现图
1#导⼊库
2import numpy as np
3import matplotlib.pyplot as plt
4import csv
5import pandas as pd
6
7#绘制折线图
8 data = pd.ad_excel('yiqingshuju.csv'))
Params['font.sans-serif'] = ['SimHei']
Params['font.family']='sans-serif'
Params['axes.unicode_minus'] = False
12
13 fig=plt.figure(figsize=(15,10))
14
15
16 xdata=[]
17 ydata=[]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论