Python爬虫06-bs4爬取全国城市温度

1、导入模块

import requests
from bs4 import BeautifulSoup

2、定义函数解析网页

def Geturl(url):
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
    response=requests.get(url,headers=headers)
    res=response.content.decode('utf-8')

先获取conMidtab 这个div标签

    soup=BeautifulSoup(res,'html5lib')
    conMidtab=soup.find('div',class_='conMidtab')

获取所有table标签

    tables=conMidtab.find_all('table')

遍历tables,获取所有tr标签,并且把前两个过滤掉

    for table in tables:
        trs=table.find_all('tr')[2:]

遍历trs,获取所有td标签
enumerate(trs) 返回两个值,第一个是下标索引,第二个是下标索引对应的值

        for index,tr in enumerate(trs):
            tds=tr.find_all('td')

解决直辖市和省份问题 通过判断下标索引值来取第1个值

            if index==0:
                city_tag=tds[1]
            else:
                city_tag=tds[0]
            temp_tag=tds[-2]  # 温度标签在倒数第二个tds里
            city=list(city_tag.stripped_strings)[0]
            temp=list(temp_tag.stripped_strings)[0]
            print('城市:',city,'温度:',temp)

3、定义一个主函数,调用

def main():
    urls=['http://www.weather.com.cn/textFC/hb.shtml','http://www.weather.com.cn/textFC/hd.shtml','http://www.weather.com.cn/textFC/gat.shtml']
    for url in urls:
        Geturl(url)

if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值