python 爬取城市天气

安装:

pip install lxml html5lib requests bs4
import requests
from bs4 import BeautifulSoup


def parse_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    text = response.content.decode('utf-8')
    soup = BeautifulSoup(text, 'html5lib')
    tables = soup.find('div', class_='conMidtab').find_all('table')
    for table in tables:
        trs = table.find_all('tr')[2:]
        for index, tr in enumerate(trs):
            tds = tr.find_all('td')
            city_td = tds[0]
            if index == 0:
                city_td = tds[1]
            city = list(city_td.stripped_strings)[0]  # 获取标签里面的字符串属性返回一个生成器,因此要转化为一个列表
            max_temp = list(tds[len(tds) - 5].stripped_strings)[0]
            min_temp = list(tds[-2].stripped_strings)[0]
            print({'城市': city, '最高气温': max_temp, '最低气温': min_temp})


if __name__ == '__main__':
    urls = [
        'http://www.weather.com.cn/textFC/hb.shtml',
        'http://www.weather.com.cn/textFC/db.shtml',
        'http://www.weather.com.cn/textFC/hz.shtml',
        'http://www.weather.com.cn/textFC/hn.shtml',
        'http://www.weather.com.cn/textFC/hd.shtml',
        'http://www.weather.com.cn/textFC/xb.shtml',
        'http://www.weather.com.cn/textFC/xn.shtml',
        'http://www.weather.com.cn/textFC/gat.shtml'
    ]
    for url in urls:
        parse_page(url)

python 爬取城市天气_第1张图片

你可能感兴趣的:(python,tool)