用python数据分析excel多地天气_python3 - 抓取全国天气数据并存入excel

导入依赖库,没有安装的需要安装

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import requests

from bs4 import BeautifulSoup

import xlsxwriter

由于抓取的7天的天气预报数据所以清空ABC三列的前7行

# 创建excel

workbook = xlsxwriter.Workbook("weather.xlsx")

# 创建sheet

worksheet = workbook.add_worksheet("weather")

# 清空列以及行数

worksheet.set_column("A:A", 7)

worksheet.set_column("B:B", 7)

worksheet.set_column("C:C", 7)

数据存储方法,看到下面的返回的数据就可以知道为什么传入参数是list

# 存储数据 方法

def savedata(colom, content_list):

# 传入参数 colom: 操作的行 content_list:行中每列内容

colom_a = "A" + colom

colom_b = "B" + colom

colom_c = "C" + colom

# 日期

worksheet.write(colom_a, content_list[0])

# 天气

worksheet.write(colom_b, content_list[1])

# 最高温度 - 最低温度

worksheet.write(colom_c, content_list[2] + "-" + content_list[3])

获取html方法

def get_content(url, data=None):

rep = requests.get(url, timeout=60)

rep.encoding = 'utf-8'

return rep.text

获取数据用到了BeautifulSoup

# 获取数据

def get_data(htmltext, city):

content = []

bs = BeautifulSoup(htmltext, "html.parser")

body = bs.body

data = body.find('div', {'id': '7d'})

ul = data.find('ul')

li = ul.find_all('li')

for day in li:

# line = [city] # 城市名

line = []

date = day.find('h1').string

line.append(date) # 日期

text = day.find_all('p')

# 天气状况

line.append(text[0].string)

# 最高温度

if text[1].find('span') is None:

temperature_H = None

else:

temperature_H = text[1].find('span').string.replace('℃', '')

# 最低温度

temperature_L = text[1].find('i').string.replace('℃', '')

line.append(temperature_H)

line.append(temperature_L)

content.append(line)

# 返回的一个list,list里面每个元素又是一个list,其中包含4个元素 天气状况, 日期, 最高,最低温度

return content

根据城市名称获城市代码 拼接完整url

# 根据城市名称拼接url

def get_url(city_name):

url = 'http://www.weather.com.cn/weather/'

with open('city.txt', 'r', encoding='UTF-8') as fs:

lines = fs.readlines()

for line in lines:

if(city_name in line):

code = line.split('=')[0].strip()

return url + code + '.shtml'

raise ValueError('invalid city name')

抓取天气打印,并存储到 excel中

if __name__ == '__main__':

cities = input('请输入城市名称:').split(" ")

print("| 日期 | 天气状况 | 温度 |")

print("-----------------------------------------")

for city in cities:

url = get_url(city)

html = get_content(url)

result = get_data(html, city)

# 从第二行开始存储,因为第一行 ["日期", "天气状况", "温度", ""] 存储这些信息

colom = 2

savedata("1", ["日期", "天气状况", "温度", ""])

for day_list in result:

# 存储数据

savedata(("%d" % (colom)), day_list)

# 一共7天数据

colom = colom + 1

if len(day_list[1]) == 1:

day_list[1] = " " + day_list[1] + " "

elif len(day_list[1]) == 2:

day_list[1] = " " + day_list[1] + " "

elif len(day_list[1]) == 4:

day_list[1] = " " + day_list[1] + " "

elif len(day_list[1]) == 3:

day_list[1] = " " + day_list[1] + " "

if len(day_list[0]) == 6:

day_list[0] = day_list[0] + " "

if len(day_list[3]) == 1:

day_list[3] = day_list[3] + " "

print("| " + day_list[0] + " | " + day_list[1] + " | " + day_list[2] + "℃ ~ " + day_list[3] + "℃ |")

print("-----------------------------------------")

# 操作完毕关闭excel 类似数据库操作

workbook.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的示例代码,演示如何使用 Python 爬取汽车之家的数据,并将其解析成 HTML 格式,最后将数据存入 Excel 文件中。 示例代码如下: ``` python import requests from bs4 import BeautifulSoup import xlwt # 请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 要爬取的页面链接 url = 'https://www.autohome.com.cn/car/' # 发送请求,获取页面内容 response = requests.get(url, headers=headers) html = response.text # 解析页面内容,获取需要的数据 soup = BeautifulSoup(html, 'html.parser') car_list = soup.select('.rank-list-ul li') # 创建 Excel 文件 workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('car_data') # 写入表头 worksheet.write(0, 0, '排名') worksheet.write(0, 1, '车型') worksheet.write(0, 2, '价格') worksheet.write(0, 3, '评分') # 写入数据 for i, car in enumerate(car_list): # 获取车型信息 name = car.select_one('.rank-list-title a').text price = car.select_one('.rank-list-price').text.strip() score = car.select_one('.rank-list-score').text.strip() # 写入数据 worksheet.write(i+1, 0, i+1) worksheet.write(i+1, 1, name) worksheet.write(i+1, 2, price) worksheet.write(i+1, 3, score) # 保存 Excel 文件 workbook.save('car_data.xls') ``` 注:该示例代码中使用了 requests 库和 BeautifulSoup 库,需要先安装这些库才能运行。另外,爬取网站数据需要遵守相关法律法规,务必谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值