前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
知识点:
-
动态数据抓包
-
requests发送请求
-
结构化+非结构化数据解析
一、开发环境:
所使用软件工具:
-
python 3.8 运行代码
-
pycharm 2022.3.2 辅助敲代码 专业版
需安装第三方模块:
-
requests 发送请求 pip install requests
-
parsel 解析数据 pip install parsel
第三方模块安装:
-
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
-
在pycharm中点击Terminal(终端) 输入安装命令
如果出现爆红, 可能是因为 网络连接超时, 可切换国内镜像源,命令如下:
pip install -i https://pypi.doubanio.com/simple/ requests
python资料、源码、教程\福利皆: 点击此处跳转文末名片获取
二、获取数据
导入模块
import requests # 发送请求要用的模块 需要额外安装的
import parsel
import csv
f = open('天气.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(['日期', '最高温度', '最低温度', '天气', '风向', '城市'])
city_list = [54511, 58362, 59287, 59493]
for city in city_list:
city_name = ''
if city == 54511:
city_name = '北京'
elif city == 58362:
city_name = '上海'
elif city == 59287:
city_name = '广州'
elif city == 59493:
city_name = '深圳'
for year in range(2013, 2023):
for month in range(1, 13):
完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777”
url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={
city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={
year}&date%5Bmonth%5D={
month}'
- 发送请求
response = requests.get(url=url)
- 获取数据
html_data = response.json()['data']
- 解析数据
select = parsel.Selector(html_data)
trs = select.css('.history-table tr') # 拿到31个tr
for tr in trs[1:]: # 第一个表头不要
tds = tr.css('td::text').getall() # 针对每个tr进行提取 取出所有的td里面的内容
tds.append(city_name) # 把城市追加到列表里面
print(tds)