又来跟你们唠叨唠叨两句~
这不最近的天气大降温,搞的我直接着凉胃痛一天,不知道你们那边是不是,长沙反正是跳崖式降温,折磨死我了
正好拿出之前的爬虫+数据分析案例,来教你们采集采集天气数据,然后顺便展示一下数据分析(这个也可以做毕设或者课堂作业哦)
知识点
- 动态数据抓包
- requests发送请求
- 结构化+非结构化数据解析
开发环境
- python 3.8 运行代码
- pycharm 2022.3.2 辅助敲代码 专业版
- requests 发送请求 pip install requests
- parsel 解析数据 pip install parsel
如何安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests)回车
- 在pycharm中点击Terminal(终端) 输入安装命令
代码实现:
- 发送请求
- 获取数据
- 解析数据
- 保存数据
爬虫案例实现
一. 思路分析
找到数据来源 静态的数据? 动态的数据?
network 抓包分析
完整代码【文末名片点击领取】
import requests # 第三方模块 提前安装 发送请求 (Python里面浏览器) 爆红是因为你没有安装模块
# 如果安装了 但还是爆红是因为什么呢? 解释器在pycharm里面配置的不对
import parsel
import csv
除了代码,还需要其他资料的 【点击文末名片】
f = open('天气数据.csv', mode='a', newline='', encoding='utf-8')
csv_writer = csv.writer(f)
csv_writer.writerow(['日期','最高温度','最低温度','天气', '风向','城市'])
areaList = [54511, 58362, 59287, 59493]
for areaId in areaList:
if areaId == 54511:
area = "北京"
elif areaId == 58362:
area = "上海"
elif areaId == 59287:
area = "广州"
else:
area = "深圳"
690643772 ### 源码领取
for year in range(2011, 2023):
for month in range(1, 13):
url = f'https://'
- 发送请求
response = requests.get(url)
- 获取数据
.text: 获取文本内容
.content: 二进制数据 图片/音频/视频
.json(): 获取json数据 字符串 {“”:“”,“”:“”, “”:“”}
json_data = response.json()
- 解析数据
解析的是什么数据?
结构化数据: json数据 字典取值提取内容
非结构化数据: 网页源代码 css/xpath/re bs4/lxml/parsel/re…
html_data = json_data['data']
# tr
select = parsel.Selector(html_data)
trs = select.css('tr')[1:]
for tr in trs:690643772 ### 源码领取
# .get(): 获取单个标签
# .getall(): 获取所有标签
td = tr.css('td::text').getall()
td.append(area)
csv_writer.writerow(td)
print(td)
效果展示
这里就稍微展示展示部分效果咯