Я хочу переместить элементы из одного тега в другой тег, используя следующий код:
soup = BeautifulSoup("<p>I wish I was bold.</p><p>me too</p><p>me three</p><p>me 4</p><p>5</p>")
d = soup.new_tag('div')
for tag in soup.body.children:
d.append(tag)
Однако, это дает ...
>>> d
<div><p>I wish I was bold.</p><p>me three</p><p>5</p></div>
Только нечетные номераэлементы были перемещены.Я проверил soup.body.children
, чтобы увидеть, как он выглядит (перед тем, как что-либо перемещать), и все теги появляются там:
>>> list(soup.body.children)
[<p>I wish I was bold.</p>, <p>me too</p>, <p>me three</p>, <p>me 4</p>, <p>5</p>]
Когда я перебираю list(soup.body.children)
, тогда все работает как положено:
soup = BeautifulSoup("<p>I wish I was bold.</p><p>me too</p><p>me three</p><p>me 4</p><p>5</p>")
d = soup.new_tag('div')
for tag in list(soup.body.children):
d.append(tag)
>>> d
<div><p>I wish I was bold.</p><p>me too</p><p>me three</p><p>me 4</p><p>5</p></div>
Почему итерация по soup.body.children
обеспечивает доступ только к нечетным тегам, а итерация по list(soup.body.children)
- ко всем из них?