数据展示:
2022-10-01 星期六 37℃ 27℃ 晴 南风 3级
2022-10-02 星期日 37℃ 27℃ 晴 东南风 2级
2022-10-03 星期一 37℃ 20℃ 晴 西南风 2级
2022-10-04 星期二 21℃ 12℃ 多云 北风 3级
2022-10-05 星期三 12℃ 11℃ 多云 北风 2级
2022-10-06 星期四 11℃ 10℃ 中雨 北风 2级
2022-10-07 星期五 14℃ 11℃ 多云 西南风 1级
2022-10-08 星期六 15℃ 13℃ 小雨 西北风 1级
2022-10-09 星期日 19℃ 6℃ 雾 北风 2级
2022-10-10 星期一 20℃ 8℃ 多云 东北风 1级
2022-10-11 星期二 22℃ 10℃ 晴 东北风 2级
2022-10-12 星期三 23℃ 10℃ 多云 北风 1级
2022-10-13 星期四 25℃ 9℃ 雾 北风 2级
2022-10-14 星期五 25℃ 12℃ 晴 北风 2级
2022-10-15 星期六 26℃ 13℃ 雾 北风 2级
2022-10-16 星期日 28℃ 14℃ 雾 北风 2级
2022-10-17 星期一 23℃ 11℃ 多云 东北风 3级
2022-10-18 星期二 22℃ 7℃ 晴 北风 3级
2022-10-19 星期三 23℃ 10℃ 晴 西南风 1级
2022-10-20 星期四 24℃ 15℃ 雾 东风 2级
2022-10-21 星期五 25℃ 13℃ 雾 西风 1级
2022-10-22 星期六 27℃ 14℃ 雾 北风 2级
2022-10-23 星期日 27℃ 13℃ 晴 东北风 1级
2022-10-24 星期一 24℃ 16℃ 雾 东南风 1级
2022-10-25 星期二 23℃ 16℃ 多云 东风 2级
2022-10-26 星期三 18℃ 13℃ 小雨 东北风 2级
2022-10-27 星期四 18℃ 14℃ 阴 北风 2级
2022-10-28 星期五 17℃ 14℃ 雾 东北风 2级
2022-10-29 星期六 21℃ 13℃ 多云 北风 1级
2022-10-30 星期日 23℃ 10℃ 多云 北风 2级
2022-10-31 星期一 23℃ 10℃ 雾 北风 2级
2022-11-01 星期二 24℃ 10℃ 雾 东南风 3级
2022-11-02 星期三 25℃ 10℃ 雾 东北风 2级
2022-11-03 星期四 24℃ 11℃ 雾 东北风 2级
2022-11-04 星期五 20℃ 12℃ 多云 北风 3级
2022-11-05 星期六 20℃ 9℃ 多云 东南风 2级
2022-11-06 星期日 23℃ 9℃ 晴 东南风 2级
2022-11-07 星期一 24℃ 11℃ 雾 东北风 2级
2022-11-08 星期二 25℃ 12℃ 雾 东风 2级
2022-11-09 星期三 27℃ 14℃ 雾 东风 2级
2022-11-10 星期四 29℃ 16℃ 多云 东风 3级
2022-11-11 星期五 25℃ 19℃ 小雨 东北风 1级
2022-11-12 星期六 20℃ 12℃ 雾 北风 3级
2022-11-13 星期日 13℃ 8℃ 多云 北风 2级
2022-11-14 星期一 10℃ 5℃ 小雨 西南风 1级
2022-11-15 星期二 17℃ 7℃ 雾 东北风 2级
2022-11-16 星期三 16℃ 10℃ 小雨 西北风 1级
2022-11-17 星期四 19℃ 10℃ 雾 东北风 2级
2022-11-18 星期五 15℃ 11℃ 小雨 北风 2级
2022-11-19 星期六 18℃ 8℃ 雾 东北风 2级
2022-11-20 星期日 20℃ 12℃ 雾 东风 1级
2022-11-21 星期一 17℃ 12℃ 大雨 北风 2级
2022-11-22 星期二 16℃ 9℃ 多云 东北风 1级
2022-11-23 星期三 15℃ 11℃ 阴 北风 1级
2022-11-24 星期四 18℃ 11℃ 多云 东风 2级
2022-11-25 星期五 20℃ 9℃ 多云 东南风 1级
2022-11-26 星期六 21℃ 12℃ 多云 东南风 4级
2022-11-27 星期日 21℃ 16℃ 雾 东风 2级
2022-11-28 星期一 16℃ 9℃ 中雨 西北风 3级
2022-11-29 星期二 11℃ 0℃ 中雨 东北风 5级
2022-11-30 星期三 2℃ 0℃ 阴 东北风 4级
2022-12-01 星期四 1℃ 0℃ 多云 西风 1级
2022-12-02 星期五 7℃ 0℃ 雾 南风 1级
2022-12-03 星期六 7℃ 5℃ 多云 北风 2级
2022-12-04 星期日 6℃ 2℃ 雨夹雪 北风 2级
2022-12-05 星期一 6℃ 2℃ 多云 东风 1级
2022-12-06 星期二 8℃ 5℃ 多云 东北风 1级
2022-12-07 星期三 10℃ 6℃ 多云 东南风 2级
2022-12-08 星期四 12℃ 5℃ 多云 北风 2级
2022-12-09 星期五 14℃ 3℃ 多云 东北风 2级
2022-12-10 星期六 14℃ -1℃ 多云 东北风 4级
2022-12-11 星期日 8℃ -1℃ 多云 东风 2级
2022-12-12 星期一 10℃ -2℃ 雾 东南风 1级
2022-12-13 星期二 13℃ -1℃ 晴 北风 2级
2022-12-14 星期三 12℃ 0℃ 晴 东南风 2级
2022-12-15 星期四 12℃ 4℃ 多云 北风 2级
2022-12-16 星期五 5℃ 1℃ 多云 东北风 2级
2022-12-17 星期六 7℃ -4℃ 多云 东风 1级
2022-12-18 星期日 9℃ -5℃ 雾 东南风 2级
2022-12-19 星期一 13℃ -1℃ 晴 东风 3级
2022-12-20 星期二 10℃ -1℃ 多云 东南风 1级
2022-12-21 星期三 15℃ 1℃ 雾 东风 1级
2022-12-22 星期四 10℃ -2℃ 晴 北风 4级
全部代码:
#encoding:utf-8
# pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
import requests
from bs4 import BeautifulSoup
import urllib.request
import random
#设置header
my_headers = [
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)",
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
'Opera/9.25 (Windows NT 5.1; U; en)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 "
]
# 抓取网页信息
def get_content(url, headers):
random_header = random.choice(headers)
req = urllib.request.Request(url) #请求网址
req.add_header("User-Agent", random_header)# 选择身份
req.add_header("Host", "lishi.tianqi.com")# 请求链接
req.add_header("Referer", "http://lishi.tianqi.com/")
req.add_header("GET", url) #get请求
content = urllib.request.urlopen(req).read()# 获取数据
return content
# 三个月份天气的链接
urls = ["http://lishi.tianqi.com/wuhan/202210.html",
"http://lishi.tianqi.com/wuhan/202211.html",
"http://lishi.tianqi.com/wuhan/202212.html"]
file = open('weather.csv','w') # 数据存储文件
for url in urls:
response=get_content(url, my_headers)# 获取数据
soup = BeautifulSoup(response, 'html.parser')# 解析数据
weather_list = soup.select('ul[class="thrui"]')# 选择提取数据
for weather in weather_list: # 标签筛选提取内容
ul_list = weather.select('li')
for ul in ul_list:
li_list= ul.select('div')
str=""
for li in li_list:
str += li.string + ','
file.write(str+'\n')# 文件数据写入
file.close()
讲解ppt:
https://download.youkuaiyun.com/download/pythonyanyan/87328959