python天气爬虫_python 天气爬虫完整,测试使用

python 天气爬虫完整,测试使用

#!user/bin/env python3

# -*- coding: gbk -*-

import os

import re

import time

import requests

from xpinyin import Pinyin  #pycharm--文件--设置---项目---project interpreter 右侧添加搜索安装

from bs4 import BeautifulSoup

def download(url, page,city1,city):

print(f"正在爬取:{url}")

html= requests.get(url).text   # 这里不加text返回

soup = BeautifulSoup(html, 'html.parser')

city = soup.select("#content h1")[0].text.strip().rstrip('\n').split('历史天气预报')[0]

lis = soup.select("#content table tr")

for li in lis:

#print(li)

span1 = li.select("td b")

if len(span1)>0:

time1=span1[0].text

tianqi=span1[1].text

qiwen = span1[2].text

fengli = span1[3].text

else:

span1 = li.select("td")

time1 = li.select("td a")[0].text.strip().rstrip('\n')

tianqi = span1[1].text.strip().replace(' ','').strip('\n')

tq = ''

for tt in tianqi.splitlines():

tt = tt.rstrip() + '\n'

tq = tq + tt

bgn_t = tq.strip().replace(' ', '').replace('\n', '').split('/')[0]

end_t = tq.strip().replace(' ', '').replace('\n', '').split('/')[1]

qiwen = span1[2].text

pp=''

for tt in qiwen.splitlines():

tt = tt.rstrip() + '\n'

pp = pp + tt

fengli = span1[3].text.strip().replace(' ','')

min_t=pp.strip().replace(' ', '').replace('\n', '').replace('℃', '').split('/')[0]

max_t = pp.strip().replace(' ', '').replace('\n', '').replace('℃', '').split('/')[1]

write_fo_file(city,city1,time1, min_t,max_t, bgn_t, end_t)

page += 1

if page < 13:

time.sleep(0)

download(f"http://www.田七后保(改拼音).com/lishi/{city1}/month/2018{page}.html",page,city1,city)

def write_fo_file(city,city1,time, min_t,max_t, bgn_t, end_t):

f = open('tianqi4.csv', 'a')

f.write(f'{city},{city1},{time},{min_t},{max_t},{bgn_t},{end_t}\n')

f.closed

def main():

if os.path.exists('tianqi5.csv'):

os.remove('tianqi5.csv')

url = 'http://www.田七后保(改拼音).com/lishi/beijing/month/201810.html'

prov = 'beijing,tianjin,shijiazhuang,tangshan,qinhuangdao,handan,xingtai,baoding,zhangjiakou,chengde,cangzhou,langfang,hengshui,taiyuan,datong,yangquan,changzhi,jincheng,shuozhou,jinzhong,yuncheng,xinzhou,linfen,lvliang,huhehaote,baotou,wuhai,chifeng,tongliao,eerduosi,hulunbeier,bayannaoer,wulanchabu,xinganmeng,xilinguole,alashanmeng,shenyang,dalian,anshan,fushun,benxi,dandong,jinzhou,yingkou,fuxin,liaoyang,panjin,changtu,chaoyang,huludao,changchun,jilin,siping,liaoyuan,tonghua,baishan,songyuan,baicheng,yanbian,haerbin,qiqihaer,jixi,hegang,shuangyashan,daqing,yichun,jiamusi,qitaihe,mudanjiang,heihe,suihua,daxinganling,shanghai,nanjing,wuxi,xuzhou,changzhou,suzhou,nantong,lianyungang,huaian,yancheng,yangzhou,zhenjiang,taizhou,suqian,hangzhou,ningbo,wenzhou,jiaxing,huzhou,shaoxing,jinhua,quzhou,zhoushan,lishui,hefei,wuhu,bangbu,huainan,maanshan,huaibei,tongling,anqing,huangshan,chuzhou,fuyang,chaohu,liuan,bozhou,chizhou,xuancheng,fuzhou,xiamen,putian,sanming,quanzhou,zhangzhou,nanping,longyan,ningde,nanchang,jingdezhen,pingxiang,jiujiang,xinyu,yingtan,ganzhou,jian,shangrao,jinan,qingdao,zibo,zaozhuang,dongying,yantai,weifang,jining,taian,weihai,rizhao,laiwu,linyi,dezhou,liaocheng,binzhou,heze,zhengzhou,kaifeng,lvyang,pingdingshan,anyang,hebi,xinxiang,jiaozuo,puyang,xuchang,tahe,sanmenxia,nanyang,shangqiu,xinyang,zhoukou,zhumadian,wuhan,huangshi,shiyan,yichang,xiangyang,ezhou,jingmen,xiaogan,jingzhou,huanggang,xianning,suizhou,enshi,xiantao,qianjiang,tianmen,shennongjia,changsha,zhuzhou,xiangtan,hengyang,shaoyang,yueyang,changde,zhangjiajie,yiyang,chenzhou,yongzhou,huaihua,loudi,xiangxi,guangzhou,shaoguan,shenzhen,zhuhai,shantou,foshan,jiangmen,zhanjiang,maoming,zhaoqing,huizhou,meizhou,shanwei,heyuan,yangjiang,qingyuan,dongguang,zhongshan,chaozhou,jieyang,yunfu,nanning,liuzhou,guilin,wuzhou,beihai,fangchenggang,qinzhou,guigang,yulin,baise,hezhou,hechi,laibin,chongzuo,haikou,sanya,wuzhishan,qionghai,danzhou,wenchang,wanning,dongfang,dingan,tunchang,chengmai,lingao,baisha,changjiang,lingshui,chongqing,chengdu,zigong,panzhihua,luzhou,deyang,mianyang,guangyuan,suining,neijiang,leshan,nanchong,meishan,yibin,guangan,dazhou,yaan,bazhong,ziyang,aba,ganzi,liangshan,guiyang,liupanshui,zunyi,anshun,tongren,qianxinan,bijie,qiandongnan,qiannan,kunming,qujing,yuxi,baoshan,zhaotong,lijiang,puer,lincang,chuxiong,honghe,wenshan,xishuangbanna,dali,dehong,nujiang,diqing,lasa,changdu,shannan,rikaze,naqu,ali,linzhi,xian,tongchuan,baoji,xianyang,weinan,yanan,hanzhong,ankang,shanglv,lanzhou,jiayuguan,jinchang,baiyin,tianshui,wuwei,zhangye,pingliang,jiuquan,qingyang,dingxi,longnan,linxia,gannan,xining,haidong,haibei,huangnan,hainan,guolv,yushu,haixi,yinchuan,shizuishan,wuzhong,guyuan,zhongwei,wulumuqi,kelamayi,tulufan,hami,changji,bazhou,akesu,kezhou,kashi,hetian,yili,tacheng,aletai,shihezi,wujiaqu,taibei,taizhong,gaoxiong,xianggang,aomen'

city = ''

p = Pinyin()

for city in prov.split(','):

#city1 = p.get_pinyin(city, '')

url = 'http://www.田七后保(改拼音).com/lishi/' + city + '/month/201810.html'

print(url)

download(url, 10, city, city)

print("爬取完毕。")

if __name__ == '__main__':

main()

本文禁止转载或摘编

--

--

--

分享到:

投诉或建议

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python天气爬虫是一种使用Python编程语言来获取实时天气信息的程序。它通过从特定的天气网站或API中提取数据,并将其解析为可读取的格式,以便用户可以获取所需的天气信息。 以下是一个简单的Python天气爬虫的实现步骤: 1. 导入所需的库:首先,你需要导入一些Python库,如requests和BeautifulSoup。Requests库用于发送HTTP请求,而BeautifulSoup库用于解析HTML页面。 2. 发送HTTP请求:使用requests库发送HTTP请求到天气网站或API,并获取响应。 3. 解析HTML页面:使用BeautifulSoup库解析HTML页面,以便可以提取所需的天气数据。 4. 提取天气数据:根据HTML页面的结构,使用BeautifulSoup库提取所需的天气数据,如温度、湿度、风速等。 5. 显示天气信息:将提取的天气数据显示给用户,可以使用print语句或其他方式进行展示。 下面是一个示例代码,演示了如何使用Python进行简单的天气爬虫: ```python import requests from bs4 import BeautifulSoup def get_weather(): # 发送HTTP请求 response = requests.get("https://www.example.com/weather") # 解析HTML页面 soup = BeautifulSoup(response.text, "html.parser") # 提取天气数据 temperature = soup.find("span", class_="temperature").text humidity = soup.find("span", class_="humidity").text wind_speed = soup.find("span", class_="wind-speed").text # 显示天气信息 print("当前温度:", temperature) print("当前湿度:", humidity) print("当前风速:", wind_speed) # 调用函数获取天气信息 get_weather() ``` 请注意,上述示例代码中的URL和HTML页面结构是示意性的,你需要根据实际情况进行相应的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值