bs4如何按顺序获取某节点下的内容以及该节点下的节点内的内容?

如:

<div>
<p>内容一<p>内容二</p>内容三<p>内容四</p>内容五<p>内容六</p>内容七<p>内容八</p>.........</p>
</div>

我该怎么做才能按顺序获取所有内容呢?期望得到的数据:

内容一
内容二
内容三
内容四
内容五
内容六
内容七
内容八
......

谢谢大家

阅读 7.4k
2 个回答
from bs4 import BeautifulSoup
html = """
<div>
<p>内容一<p>内容二</p>内容三<p>内容四</p>内容五<p>内容六</p>内容七<p>内容八</p>.........</p>
</div>
"""
soup = BeautifulSoup(html,'html.parser')
data = soup.select('div p')
for i in range(5):
    print(data[i].text)

图片描述

题主提供的的内容<p>标签有点乱

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
html_doc = '''<div>
<p>内容一<p>内容二</p>内容三<p>内容四</p>内容五<p>内容六</p>内容七<p>内容八</p>.........</p>
</div>'''

soup = BeautifulSoup(html_doc, 'lxml')

# method 1
tags = soup.find('div').find_all('p')
for i in tags:
    # do something here
    print i.text

# method 2
print soup.find('div').find('p').text
print soup.find('div').find('p').find_next('p').text
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题