Leeeo
June 4, 2022, 1:05pm
1
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文档处理的前后对比,这样一眼就看明白了
Leeeo
June 6, 2022, 10:45am
6
这是html的一部分,<div class="entrybody">…</div>
还有父标签的,说明一下
oxford
June 6, 2022, 11:33am
7
可以直接把内容部分复制出来吗?就你截图那个部分就可以了。方便测试。手打太累人
1 Like
oxford
June 6, 2022, 12:04pm
10
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))
oxford
June 6, 2022, 12:05pm
11
论坛支持直接编辑markdown,以后你直接贴markdown代码就可以了,保留格式的
沈洛爻
June 6, 2022, 12:07pm
14
对的,所以不应该是1吗,,我记得这个索引号是从0开始
oxford
June 6, 2022, 12:10pm
15
这是循环打印出来的结果
<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>
沈洛爻
June 6, 2022, 12:14pm
17
好奇怪,我理解不了,不过以你为准吧,对了,后面那个兄弟元素是不是要判断一下是否存在,我经常忘记判断结果导致出错,又要重新跑一遍
oxford
June 6, 2022, 12:15pm
18
对,要是没有就报错了,我制作电子书mdx的时候也会忘记
沈洛爻
June 6, 2022, 12:15pm
19
我好像知道为什么了,,,因为他那个父元素的子元素没修改前就只有一个,,是不是感觉只要比0大的整数都可以
沈洛爻
June 6, 2022, 12:16pm
20
如果是这样的话,我感觉写1还是最保险的,因为永远不知道词典哪一处会出现层级错误,,