Rastreo de la última edición de China Weather Network of Python Crawler Project

Explicación: este proyecto reemplaza nuestra visualización diaria de las condiciones de temperatura en todo el país desde la página web u otros canales (¡este proyecto solo rastrea la temperatura más baja en varias regiones del país, y otras funciones extendidas se pueden mejorar de acuerdo con este proyecto! )

Veamos primero los resultados muy humanos:

inserte la descripción de la imagen aquíMódulos utilizados:

  1. peticiones
  2. pycharts
  3. bs4

Aquí se debe explicar un punto (debe hacerse): la versión de python que usemos será básicamente superior a la 3.6, por lo que habrá problemas al usar la barra en pyecharts; para resolver este problema, el autor también tiene pasos específicos para resolver it: actualice la versión: solo es compatible con Python3.6+

Ejecute los siguientes tres elementos bajo el comando cmd:


1. pip install wheel
 
2. pip install pyecharts==0.1.9.4 或则 pip install pyecharts -U
 
3. pip install pyecharts-snapshot

Nota: Este problema es causado por la versión y lo encontré después de leer el github oficial.

Vayamos directamente al código completo: (los pasos específicos de la operación se publicarán en artículos posteriores)

import requests
# from pyecharts import Bar
from bs4 import BeautifulSoup
from pyecharts import Bar
# 目标网站:http://www.weather.com.cn/textFC/hb.shtml

All_DATE=[]
def parse_url(url):
    headers = {
    
    'User-Agent':'此处需要更改成你本机的User-Agent'}
    reponse = requests.get(url,headers= headers)
    text = reponse.content.decode('utf-8')
    soup = BeautifulSoup(text, 'html5lib')
    ConMidtab  = soup.find('div',class_='conMidtab')
    # print(ConMidtab)
    tables = ConMidtab.find_all('table')
    for table in tables:
        # print(table)
        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]
            tempt_td = tds[-2]
            min_tempt  = list(tempt_td.stripped_strings)[0]
            All_DATE.append({
    
    'city':city ,'min_tempt':int(min_tempt)})
    All_DATE.sort(key=lambda x: x['min_tempt'])
    data = All_DATE[0:20]  # 取出前20个
    cities = list(map(lambda x: x['city'],data))
    tempts = list(map(lambda x: x['min_tempt'], data))
    # plt.bar(cities, tempts,color ='r')  # 绘制柱状图
    # plt.show('mytempt.html')
    # print(cities)
    # print(tempts)
    chart = Bar("实时动态华北地区的最低气温柱状图")
    chart.add("",cities,tempts)
    chart.render('实时天气.html')


def get_url():
    urls = ['http://www.weather.com.cn/textFC/hb.shtml',
          'http://www.weather.com.cn/textFC/db.shtml',
          'http://www.weather.com.cn/textFC/hd.shtml',
          'http://www.weather.com.cn/textFC/hz.shtml',
          'http://www.weather.com.cn/textFC/hn.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_url(url)
        break    # 为了节省时间我们只获取了第一个华北地区的最低气温情况


if __name__ == '__main__':
    get_url()

¡Los resultados también se mostrarán normalmente!

Supongo que te gusta

Origin blog.csdn.net/m0_48915964/article/details/115576168
Recomendado
Clasificación