pas*_*sky 19 html python beautifulsoup
我有一些看起来像这样的HTML:
<h1>Title</h1>
//a random amount of p/uls or tagless text
<h1> Next Title</h1>
Run Code Online (Sandbox Code Playgroud)
我想将所有HTML从第一个h1复制到下一个h1.我怎样才能做到这一点?
小智 12
这是明确的BeautifulSoup方式,当第二个h1
标签是第一个标签的兄弟:
html = u""
for tag in soup.find("h1").next_siblings:
if tag.name == "h1":
break
else:
html += unicode(tag)
Run Code Online (Sandbox Code Playgroud)
我也有同样的问题。不确定是否有更好的解决方案,但我所做的是使用正则表达式来获取我正在寻找的两个节点的索引。完成后,我提取两个索引之间的 HTML 并创建一个新的 BeautifulSoup 对象。
例子:
m = re.search(r'<h1>Title</h1>.*?<h1>', html, re.DOTALL)
s = m.start()
e = m.end() - len('<h1>')
target_html = html[s:e]
new_bs = BeautifulSoup(target_html)
Run Code Online (Sandbox Code Playgroud)
有趣的问题。您无法仅使用 DOM 来选择它。您必须循环遍历第一个 h1(包括)之前的所有元素,并将它们放入 intro = str(intro) 中,然后将第二个 h1 之前的所有元素放入 Chapter1 中。然后使用以下命令从第一章中删除介绍
chapter = chapter1.replace(intro, '')
Run Code Online (Sandbox Code Playgroud)