要使用BeautifulSoup从起始关键词到结束关键词提取文本,可以按照以下步骤进行:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
这里的html_doc
是HTML文档的字符串。
find()
或find_all()
方法找到起始关键词的标签:start_tag = soup.find('start_tag_name', attrs={'attribute_name': 'attribute_value'})
其中,start_tag_name
是起始关键词标签的名称,attrs
是可选的属性字典,用于进一步过滤标签。
find_next()
或find_all_next()
方法找到结束关键词的标签:end_tag = start_tag.find_next('end_tag_name', attrs={'attribute_name': 'attribute_value'})
这里的end_tag_name
是结束关键词标签的名称,attrs
是可选的属性字典,用于进一步过滤标签。
text = ''
for tag in start_tag.next_siblings:
if tag == end_tag:
break
if tag.string:
text += tag.string
这里使用了next_siblings
属性来迭代起始关键词标签之后的所有兄弟标签,直到遇到结束关键词标签为止。将每个标签的字符串内容拼接到text
变量中。
完整的代码示例:
from bs4 import BeautifulSoup
html_doc = """
Text before start keyword
Start keyword
Text between start and end keywords
End keyword
Text after end keyword
"""
soup = BeautifulSoup(html_doc, 'html.parser')
start_tag = soup.find('p', text='Start keyword')
end_tag = start_tag.find_next('p', text='End keyword')
text = ''
for tag in start_tag.next_siblings:
if tag == end_tag:
break
if tag.string:
text += tag.string
print(text.strip())
运行以上代码输出:
Text between start and end keywords