首页 > 解决方案 > 为什么以错误的顺序生成 html 的这个元素?

问题描述

我正在尝试lienconjnew_label以下代码替换元素

import requests
session = requests.Session()
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
r = session.get('https://www.larousse.fr/dictionnaires/francais/aimer/1925', headers = headers)
soup = BeautifulSoup(r.content, 'html.parser')

temp2 = [tag.attrs['href'] for tag in soup.select('.lienconj')]
for i in range(len(temp2)):
    new_label_1 = '<label for = "' + str(i) + '">' + '<div class="boxed">Conjugaison</div>' + '</label>'
    new_label_2 = '<input id = "' + str(i) + '" type = "checkbox" class = "trigger">'          
    new_label = new_label_1 + new_label_2
    soup.select('.lienconj')[0].replace_with(BeautifulSoup(new_label)) 

format = open(r'E:\\test.html', 'w+', encoding = 'utf8')
format.write(str(soup.select_one('.wrapper')))
format.close()      
 

很明显new_label_1<div class="boxed">Conjugaison</div>在里面<label for</label>。您能否解释一下为什么生成的 html 没有这个正确的顺序?

以下是结果 html 的摘录test.html

<p class="CatgramDefinition">verbe transitif <label for="10"></label></p>

标签: htmlpython-3.xbeautifulsoup

解决方案


推荐阅读