我有一个用来提取的标签列表:
soup.findAll('div', {'class': 'formelement'}):输出为:
[<div class="formelement">
<label class="libelle" for="field_tit">Etat :</label>
Publié </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Type de produit :</label>
Plaque de plâtre </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Numéro :</label>
PP/48-05 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Titulaire :</label>
CIA ESPAÑOLA DE AISLAMIENTOS SA </div>,
<div class="formelement">
<label class="libelle" for="field_ref">Usine :</label>
39 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date d'admission :</label>
13/07/2017 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date de reconduction :</label>
04/02/2021 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date de fin de validité :</label>
04/05/2022 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Certificat PDF :</label>
<a href="application/docs/certificats/PP_48_05.pdf" target="_blank">
<img src="public/images/pdf.gif" title="Télécharger le certificat au format PDF"/>
</a>
</div>]我的目标是有一个字典:
product_data = {
"Numéro": "PP/48-05",
"Titulaire": "CIA ESPAÑOLA DE AISLAMIENTOS SA",
"Usine": "39",
"Date de fin de validité": "04/05/2022",
"Certificat PDF": "application/docs/certificats/PP_48_05.pdf"
}我试着用
for div in soup.findAll('div', {'class': 'formelement'}):
product_data[div.text] = div.next_sibling但它将接受标记中的所有字符串(显然),并且找不到任何方法来分别获取div中的两个字符串。如何分别获取这些字符串?
我希望我的问题足够明确。
发布于 2021-08-11 17:49:08
您可以销毁/分解内部标记
from bs4 import BeautifulSoup
html="""
<div class="formelement">
<label class="libelle" for="field_tit">Etat :</label>
Publié </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Type de produit :</label>
Plaque de plâtre </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Numéro :</label>
PP/48-05 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Titulaire :</label>
CIA ESPAÑOLA DE AISLAMIENTOS SA </div>,
<div class="formelement">
<label class="libelle" for="field_ref">Usine :</label>
39 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date d'admission :</label>
13/07/2017 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date de reconduction :</label>
04/02/2021 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Date de fin de validité :</label>
04/05/2022 </div>,
<div class="formelement">
<label class="libelle" for="field_tit">Certificat PDF :</label>
<a href="application/docs/certificats/PP_48_05.pdf" target="_blank">
<img src="public/images/pdf.gif" title="Télécharger le certificat au format PDF"/>
</a>
</div>"""
soup = BeautifulSoup(html, 'html.parser')
data = {}
for div in soup.findAll('div', {'class': 'formelement'}):
label = div.find('label')
key = label.text[:-2]
label.decompose()
try:
value = div.find('a').get('href')
except AttributeError:
value = div.text.strip()
data[key] = value
print(data)输出
{'Etat': 'Publié', 'Type de produit': 'Plaque de plâtre',
'Numéro': 'PP/48-05', 'Titulaire': 'CIA ESPAÑOLA DE AISLAMIENTOS SA',
'Usine': '39', "Date d'admission": '13/07/2017',
'Date de reconduction': '04/02/2021', 'Date de fin de validité': '04/05/2022',
'Certificat PDF': 'application/docs/certificats/PP_48_05.pdf'}https://stackoverflow.com/questions/68746553
复制相似问题