目标:爬取城市15天天气并输出文件
步骤1:URL解析
一/不同的路径名区别在于:城市名拼音
二/相关的有用信息位于源码的第67行
步骤2:实现多个URL
尝试01:石家庄shijiazhuang,呼和浩特huhehaote,拼音为12+个英文字母组成
随机排列共有2612+2611+……+261种组合
失败原因:电脑烧不起
尝试02:
城市名有限个,使用Excel列表复制键入
#组合URL-输入列表
line = input("从Excel复制一行城市拼音:") #放入一个长串字符串:由excel复制来
import re #声明使用re库
biao=re.split(r'\t',line) #把line字符串按\t即空格切割
#print(biao) #输出biao列表(自查是否正常输出)
考虑到键入的大小写会有差异,做小写化处理
#组合URL-列表处理(小写化)
biao0 = [] #申明一个空表
for a in biao: #把B遍历到a
biao0.append(str(a.lower())) #把遍历的a全部小写化装进列表biao0方便使用
#print(biao0) #输出biao0列表(自查是否正常输出)
拼接成相应URL
#组合URL-最终拼装
TQ = [] #声明最终列表的空白容器
for x in biao0: #把biao0的元素遍历
Web = ("http://www.tianqi2345.com/yubao/" + x + ".htm") #拼装网址URL
#print(Web) #遍历输出网址URL(自查是否正常输出)
按照URL解析的信息位置请求数据
#请求数据并按行读取
from urllib import request #应用request模块
A = request.urlopen(Web) #把请求来的信息给A
B = A.readlines() #把A的信息按照行装进B列表
#print(B[64].decode('utf-8')) #输出列表第65个元素(自查/解析源码看是第几行)
#print(B[66].decode('utf-8')) #输出列表第67个元素(自查/解析源码看是第几行)
tianqi =(B[64].decode('utf-8')+B[66].decode('utf-8')) #对特定位置的元素切片并解码出相应中文
#print(tianqi) #输出数据便于自查调整代码
TQ.append(tianqi) #把天气组合信息放入列表TQ
#print(TQ)
剔除无用数据乱码字符
#整理TQ列表信息-剔除无用信息
TQ1 = [] #声明一个新的列表容器
for line2 in TQ: #把TQ列表中的元素遍历出来
import re #声明调用re模块
#按照需要剔除无关的信息
tq1=re.split(r'>|\)|<|\(|/div|\n|br /|\t|℃~|℃|白天:|今天|明天|后天|15天天气预报|)',line2)
for tq2 in tq1: #遍历初步处理后的信息
#print(tq2) #输出自查
tq2 = tq2.strip() #删除可能有的头尾空白
if tq2 != '': #如果不为空白元素(剔除空白)
if 'a' not in tq2: #如果不含a字母(剔除英文乱码)
if 's' not in tq2: #如果不含s字母(要是还不能剔除干净再多剔几个字母)
if '风'not in tq2: #如果不含风(有些数据有风力有些没有,影响元素对齐)
TQ1.append(tq2) #才执行添加到新容器的操作
对信息进行排版
#对TQ1的信息进行二次处理(排版)
TQ2 = [] #声明列表容器
for bz2 in range(0,76): #相关信息共有76行,设置生成对应数组并遍历循环
tq2 = TQ1[bz2::76] #从第一个元素开始,按76的步长切片到最后一个元素
aaa = '\t' #声明一个制表符
TQ2.append(aaa.join(tq2)) #把每切片(含76个)的列表用制表符串接成一个新元素
bbb = '\n' #声明一个换行符
TQ3 = bbb.join(TQ2) #把新元素组成的新列表用换行符串接成一个字符串给TQ3
print(TQ3) #输出TQ3自查
导出保存爬取的数据
#指定保存路径和保存文件名及格式,还没学习二步print,如有需要手动更改代码(txt,xls,xlxs都适用)
#在目的路径声明一个文件及格式并打开
f = open(r'C:\Users\admi\Desktop\Python爬虫test\test.xls','w')
f.write(TQ3) #把处理好的信息写入这个文件
f.close() #关闭写入操作
导出excel
复制到创建好的excel模板中
最终应用:
根据未来天气结合销售等其他情况匹配雨具或相关商品的调度
根据历史天气变化计算由天气因素影响的某种变化系数(销售增幅/跌幅)/(人流量)/其他,再结合未来天气做出相关预测