使用正则表达式爬取武功未来15天天气预报

此链接是正则表达式的知识点,知识点与实例结合起来有助于理解哦!—— Python基础——正则表达式 

使用正则表达式爬取武功未来15天天气预报

本次我使用的是 " 天气网 " 进行爬虫,爬取的地方名为 " 武功 " ,网站为 www.tianqi.com。本网站可能会反爬虫,解决办法如下:

  • 进入该网站,搜索 "武功" 进行天气查询,然后点击 "武功15天天气",进入下面第二张图的界面。

  • 在空白处单击右键,点击 "查看元素" ——>" 网络"(此时若无任何信息,则在下图所示的界面重新搜索一下"武功",便可刷新出来)——> "状态"——>单击任意一条 "状态"——>"消息头"——>双击 "User-Agent",使其完全展开,复制——>接下来就是创建合适的 http请求了,具体见代码。

代码如下:

import re
import requests
from prettytable import PrettyTable
url='https://www.tianqi.com/wugong/15/'
#反爬虫
txt=requests.get(url,headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0","Host":"www.tianqi.com"}).text
print("武功未来15天天气预报".center(50,'-'))
m0=re.compile(r'<h3><b>(\d\d月\d\d日)</b>')  #日期
m1=re.compile(r'  (<em>)?(\w+)(</em>)?<')  #星期
m2=re.compile(r'temp">(\w+)')   #天气
m3=re.compile(r'(-?\d+)~<b>(-?\d+)</b>℃<')  #温度
m4=re.compile(r'<li>(\w+) (\d+级)<')  #风向及级别
m5=re.compile(r'<h3><b>(\d\d月\d\d日)</b>  (<em>)?(\w+)(</em>)?<.+?temp">(\w+).+?(-?\d+)~<b>(-?\d+)</b>℃<.+?<li>(\w+) (\d+级)<',re.S)   
result=m5.findall(txt)
table=PrettyTable(['日期','星期','天气','温度/℃','风向','级别'])
for recode in result:
    riqi=recode[0]
    xingqi=recode[2]
    tianqi=recode[4]
    wendu=(recode[5]+'~'+recode[6])
    fengxiang=recode[7]
    jibie=recode[8]
    list=[riqi,xingqi,tianqi,wendu,fengxiang,jibie]
    table.add_row(list)
print(table)



运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值