很久以前接的单子,分享一下(挺水的,将就着看吧)

文章目录

  • 作业要求
  • 数据爬取
  • 爬取结果
  • 数据处理
  • 数据可视化
  • 大作业文档

作业要求

《Python与数据分析》期末大作业要求(2020-2021学年第2学期)
一、期末作业要求:
1、在前期作业爬取的数据基础上,用Python编写代码对爬取的数据进行全面数据分析并可视化,鼓励建立计量模型进行分析;
2、写作期末大作业文档:整体思路,对爬取网站的分析,对数据进行哪些方面的数据分析及数据的可视化,结论。
3、必须自己编写爬虫程序,不允许使用爬虫框架(如scrapy) 爬取数据,严禁抄袭。
二、提交:
1、爬虫程序代码(前期作业)文件
(.ipynb),加, 上必要的注释或笔记说明;
2、数据分析、可视化代码文件(.ipynb) ,加上必要的注释或笔记说明;
3、抓取的数据文件及数据分析和可视化产生的中间文件;
4、期末作业文档。

数据爬取

# 用于爬取信息
import requests
# 用于解析网页
from bs4 import BeautifulSoup
# 用于正则匹配找到目标项目
import re
# 对csv文件的操作
import csv# 打开文件
# a+权限追加写入
# newline=""用于取消自动换行
fp = open("data.csv", "a+", newline="")
# 修饰,处理成支持scv读取的文件
csv_fp = csv.writer(fp)
# 设置csv文件内标题头
head = ['日期', '最高气温', '最低气温']
# 写入标题
csv_fp.writerow(head)# UA伪装
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"
}# 存放全部数据
data = []# 进行url拼接,主要拼接的是年份和月份
# 从2011年到2020年
for i in range(2011, 2021):# 从1月到12月for j in range(1, 13):# 字符串化i = str(i)# 小于10则补0if j < 10:j = "0" + str(j)else:# 字符串化j = str(j)# 完成拼接url = "http://www.tianqihoubao.com/lishi/beijing/month/" + i + j + ".html"# 获取响应response = requests.get(url=url, headers=headers)# 设置编码为gbkresponse.encoding = 'gbk'# 获取响应文本数据page = response.text# 用BeautifulSoup解析网页soup = BeautifulSoup(page, 'lxml')# 获取所有tr标签tr_list = soup.find_all('tr')# 解析每一个tr标签for tr in tr_list:# 用于存放一天的数据one_day = []# 字符串化便于正则匹配tr = str(tr)# 去除所有空格tr = tr.replace(" ", "")# 取出日期date = re.findall(r'title="(.*?)北京天气预报">', tr)# 如果取到则放入one——day存放if date:one_day.append(date[0])# 取出最高温和最低温tem = re.findall(r'(.*?)℃', tr)# 如果取到则放入one——day存放if tem:one_day.append(tem[0])one_day.append(tem[1])# 如果完整的取到一天的数据则放入data存放if len(one_day) == 3:data.append(one_day)print(one_day)# 写入csv文件csv_fp.writerow(one_day)# 关闭文件指针
fp.close()

爬取结果

数据处理

# 读取csv文件
import csv
# 作图工具
from matplotlib import pyplot as plt# 存放日期
x = []
# 存放最高气温
h = []
# 存放最低气温
l = []
# 读取之前爬取的数据
with open("data.csv") as f:reader = csv.reader(f)j = 1for i, rows in enumerate(reader):# 不要标题那一行if i:row = rowsprint(row)x.append(rows[0])h.append(int(rows[1]))l.append(int(rows[2]))
# 设置画板大小
fig = plt.figure(dpi=128, figsize=(20, 6))
# 显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 画最高气温
plt.plot(x, h, c="red", alpha=0.5)
# 画最低气温
plt.plot(x, l, c="blue", alpha=0.5)
# 区间渲染
plt.fill_between(x, h, l, facecolor="blue", alpha=0.2)
# 标题
plt.title("北京市过去3658天的气温变化")
# y轴名称
plt.ylabel("气温")
# x轴名称
plt.xlabel("日期")
plt.xticks(x[::300])
plt.show()

数据可视化

大作业文档

整体思路
爬取天气后保网站北京市过去9年(3658天)的最高温度和最低温度,并运用matplotlib绘制折线图进而分析天气变化趋势
网站分析
1.该网站单次只能查询一个月的天气情况,所以通过拼接url的方式依次查询
2.查询数据位于table表单中,tr标签没有属性,所有用正则匹配处理每个tr时需要判断有没有取到数据,日期,最高气温,最低气温都查询到时视为成功并存入总数据的列表
数据分析
1.通过过去3658天的气温变化,可以看出北京市每年的寒暑气温温差基本稳定在50度左右,而2015年寒暑温差超过60度
结论
1.北京市温度变化基本符合规律

python爬虫课设-爬取3000条数据并做数据可视化相关推荐

  1. Python爬虫实战之 爬取全国理工类大学数量+数据可视化

    上次爬取高考分数线这部分收了个尾,今天咱们来全面爬取全国各省有多少所理工类大学,并简单实现一个数据可视化.话不多说,咱们开始吧. 第一步,拿到url地址 第二步,获取高校数据 第三步,地图可视化 第四 ...

  2. Python爬虫实战演练:爬取微博大V的评论数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT共享之家 ,作者: IT共享者 理论篇 试想一个问题,如果我们要抓取某个微博大V ...

  3. python爬虫实操|爬取nba中国官网球员数据

    本次我们将爬取Ajax动态加载数据并进行简单数据分析,其主要方式是找到数据的json包,将其保存到本地目录,进行数据分析 文章目录 一.业务分析 二.步骤 1.找到数据 2.抓取数据 3.分析数据 总 ...

  4. 【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)

    [Python爬虫]从零开始爬取Sci-Hub上的论文(串行爬取) 维护日志 项目简介 步骤与实践 STEP1 获取目标内容的列表 STEP2 利用开发者工具进行网页调研 2.1 提取文章链接和分页链 ...

  5. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  6. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  7. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  8. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  9. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

最新文章

  1. 第十三周项目四-立体类族共有的抽象类
  2. CentOS 6.9安装配置nmon
  3. PPT科研绘图第二节 如何调整三维旋转参数
  4. oppo如何更新计算机,OPPO工程师手把手教你固件升级
  5. redis和kafka比较
  6. vue引入id3_Vue页面间传值,客户端数据存储,以及父子组件间props传值
  7. Jetson Nano安装pytorch 基于torch1.6和torchvision0.7
  8. python好用的内置库_第42p,time库,Python中优秀的内置库
  9. 【Linux】Linux中变量#,@,0,1,2,*,$$,$?的解释
  10. php获取微信图片访问权限,微信小程序访问图片出现403,图片防盗链的解决办法...
  11. 查找数组中被删除的一个元素
  12. Android ADB命令?这一次我再也不死记了!【简单说】
  13. 实用的Chrome插件推荐
  14. Android-原笔迹钢笔手写的探索与开发
  15. Linux用户宝典:值得一用的5款远程桌面应用程序
  16. Learning RoI Transformer for Detecting Oriented Objects in Aerial Images
  17. 自学微信二次开发(1)
  18. 数据预处理 拉依达准则 matlab,数学建模数据预处理.doc
  19. 微信公众号--php
  20. 英语单词积累8.10

热门文章

  1. VS2019++QT5.12.10+PCL1.11.1+VTK8.2.0+opencv(camke3.18.0)环境搭配及演示实例
  2. z变换判断稳定性和因果性_判断因果性.PPT
  3. 学习管理系统 LMS
  4. 系统动力学软件vensim之指数增长
  5. Android Update Engine 分析(十七)10 类 InstallOperation 数据的生成和应用
  6. 纯前端JS导出Word包含图片
  7. HTML5直播技术探究
  8. win7系统计算机文件夹缓慢,windows7搜索文件非常慢的解决办法以及优化方法
  9. 数据中台的云原生机会 | 甲子光年
  10. linux系统文件复制过程时长,Linux系统I/O操作与零拷贝