1. Convertissez le fichier "datare.html" du dossier dans la sortie Excel correspondante
astuce : soup= BeautifulSoup(open('datare.html'), 'html.parser') lit le fichier, s'il y a une erreur de reconnaissance d'encodage, ajouter la méthode d'encodage chinois dans la fonction open
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()
Utilisez la bibliothèque pandas pour convertir html en xlsx
pandas.read_html() : convertir la table html en DataFrame
Il existe le formulaire html suivant :
L'utilisation de read_html() lira :
[ 城市 环比 同比 定基 增长 减少 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'): Créez une classe d'écriture Excel et écrivez l'objet DataFrame dans la feuille de calcul Excel
DataFrame.to_excel : Exporter DataFrame vers un fichier Excel
Blogue de référence : https://blog.csdn.net/sinat_30062549/article/details/51180518
2. Exemple 20 dans le livre de référence, modifier le code pour sortir les 50 dernières universités
astuce : L'URL du classement des universités est : 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 référence : https://blog.csdn.net/weixin_47434673/article/details/124161861