如何把一个子节点放到另一个节点里面,python

li=soup.find(name='div',class='entrybody')
li2=soup.find(name='div',id='phrases_container')
li.insert(2,li2)

这样完成第一个地方插入

li=soup.find(name='div',class='entrybody')[1]
li2=soup.find(name='div',id='phrases_container')[1]
li.insert(2,li2)

这样完成第二个地方插入
但是还有很多地方,如何一次性完成上面重复的操作
提前谢谢。
实例对比


能再详细描述下是什么需求吗,,我有点看不太懂

如果只是重复把一个节点放到另一个里面,可以把两个节点放进一个元祖,然后把所有的元祖放到一个列表,然后用循环来处理,处理逻辑思路大致跟你写的相同。最好贴个实例,两个html文档处理的前后对比,这样一眼就看明白了

实例刚刚上传了

麻烦写个代码给我吗?写纸上也可以

这是html的一部分,<div class="entrybody">…</div>还有父标签的,说明一下

可以直接把内容部分复制出来吗?就你截图那个部分就可以了。方便测试。手打太累人 :joy:

1 个赞


仅供参考,具体细节自己修改

把insert(0 改成1,我没注意看细节

entry_bodys = soup.select('.entryBody')
        if entry_bodys:
            for entry in entry_bodys:
                sibling = entry.find_next_sibling('div',**{'id':'phrases_container'})
                if sibling:
                    entry.insert(2, sibling)
                print(str(entry)) 

论坛支持直接编辑markdown,以后你直接贴markdown代码就可以了,保留格式的

他那个需求好像insert的索引号是1?

你看他的图片,OL在前面的

对的,所以不应该是1吗,,我记得这个索引号是从0开始

这是循环打印出来的结果

<div class="entryBody">
  <ol class="senses"></ol>
  <div id="phrases_container">
    <h2 class="TITLE" id="feel_1_48">phrases</h2>
    <ul>
      <li class="PHR -XREF">
        <a href="entry://feel free#feel-free" title="feel free"> feel free</a>
      </li>
      <li class="PHR-XREF">
        <a href="entry:f/feel like#feel-like" title="feel like"> feel like</a>
      </li>
    </ul>
  </div>
</div>
<div class="entryBody">
  <ol class="senses"></ol>
  <div id="phrases_container">
    <h2 class="TITLE" id="feel_2_7">phrases</h2>
    <ul>
      <li class="PHR-XREF">
        <a
          href="entry://get a feel for something#get-a-feel-for-something"
          title="get a feel for something"
          >get a feel for something</a
        >
      </li>
      <li class="PHR -XREF">
        <a
          href="entry://have a feel for something#have-a-feel-for-something"
          title="have a feel for something"
          >have a feel for something</a
        >
      </li>
    </ul>
  </div>
</div>

你看他自己写的代码,也是插入到位置2

好奇怪,我理解不了,不过以你为准吧,对了,后面那个兄弟元素是不是要判断一下是否存在,我经常忘记判断结果导致出错,又要重新跑一遍

对,要是没有就报错了,我制作电子书mdx的时候也会忘记 :sweat_smile:

我好像知道为什么了,,,因为他那个父元素的子元素没修改前就只有一个,,是不是感觉只要比0大的整数都可以

如果是这样的话,我感觉写1还是最保险的,因为永远不知道词典哪一处会出现层级错误,,