Ejercicios de Python (8)

1. Convierta el archivo "datare.html" en la carpeta en la salida de Excel correspondiente

consejo: sopa = BeautifulSoup(open('datare.html'), 'html.parser') lee el archivo, si hay un error de reconocimiento de codificación, agregue el método de codificación chino en la función abierta

import pandas

with open('datare.html','r',encoding='gbk') as f:
    data=pandas.read_html(f.read())
    excel_writer=pandas.ExcelWriter('datare.xlsx')
    data[0].to_excel(excel_writer)
    excel_writer.close()

Use la biblioteca pandas para convertir html a xlsx

pandas.read_html (): convierte la tabla html en DataFrame

Existe el siguiente formulario html: 

 El uso de read_html() leerá:

[     城市     环比     同比     定基     增长   减少  Unnamed: 6   1
0  "北京"  101.5  120.7  121.4  121.4  NaN       121.4 NaN
1  "上海"  101.2  127.3  127.8  131.4  NaN         NaN NaN
2  "广州"  101.3  119.4  120.0  146.4  NaN         NaN NaN
3  "深圳"  102.0  140.9  145.5  121.9  NaN         NaN NaN
4  "沈阳"  100.1  101.4  101.6  126.4  0.0         NaN NaN
5   "3"    5.0      7    7.0    8.0  NaN         8.0 NaN
6   NaN    NaN    "8"    1.0    NaN  NaN         NaN NaN
7     1    NaN      4    NaN    NaN  7.0         NaN NaN
8   NaN    NaN      4    NaN    NaN  NaN         NaN NaN
9   NaN    NaN      1    NaN    NaN  NaN         NaN NaN]

pandas.ExcelWriter('file_name'): cree una clase de escritura de Excel y escriba el objeto DataFrame en la hoja de cálculo de Excel

DataFrame.to_excel: exportar DataFrame a un archivo de Excel

Blog de referencia: https://blog.csdn.net/sinat_30062549/article/details/51180518

2. Ejemplo 20 en el libro de referencia, modifique el código para mostrar las últimas 50 universidades

consejo: la URL del ranking universitario es: http://gaokao.xdf.cn/201911/10991728.html

import requests as rq
from bs4 import BeautifulSoup as Bs
import pandas as pd
import numpy as np

def get(url):
    rp=rq.get(url)
    rp.encoding='utf-8'
    return rp.text

def lastN(html,n):
    tables=Bs(html,'html.parser').find_all('tr')
    for tr in tables[-n:]:
        tds=tr.find_all('td')
        school_raw=[td.contents for td in tds][1][1].contents
        if(len(school_raw)==1):
            print(school_raw[0].replace('\n','').replace('\t',''))
        else:
            print(school_raw[1].string)

if __name__=='__main__':
    url='https://gaokao.xdf.cn/201911/10991728.html'
    lastN(get(url),50)

Blog de referencia:  https://blog.csdn.net/weixin_47434673/article/details/124161861

Supongo que te gusta

Origin blog.csdn.net/qq_53401568/article/details/128366308
Recomendado
Clasificación