Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅从Python中获取直接文本_Python_Html_Python 3.x_Beautifulsoup - Fatal编程技术网

仅从Python中获取直接文本

仅从Python中获取直接文本,python,html,python-3.x,beautifulsoup,Python,Html,Python 3.x,Beautifulsoup,我正在解析一个HTML文档,我想得到特定的标签,并将它们分别用于其他标签,但我正在解决标签中的标签等问题。有人能建议如何只获取标签内容而不包括标签内容吗 <p> I want this text <b> I want to parse this separately </b> I also want this text </p> 我想要这个文本我想要单独解析这个我也想要这个文本 您可以使用它 from bs4 import BeautifulSo

我正在解析一个HTML文档,我想得到特定的标签,并将它们分别用于其他标签,但我正在解决标签中的标签等问题。有人能建议如何只获取标签内容而不包括标签内容吗

<p> I want this text <b> I want to parse this separately </b> I also want this text </p>
我想要这个文本我想要单独解析这个我也想要这个文本

您可以使用它

from bs4 import BeautifulSoup, NavigableString

html = '''<p> I want this text1 <b> I want to parse this separately1 </b> I also want this text1 </p>
<p> I want this text2 <b> I want to parse this separately2 </b> I also want this text2 </p>'''
soup = BeautifulSoup(html, 'html.parser')
for p in soup.find_all('p'):
    outer_text = ' '.join([x.strip() for x in p if isinstance(x, NavigableString)])
    print(outer_text)
    inner_text = p.b.text.strip()
    print(inner_text)
来自bs4导入美化组,NavigableString
html=''我想要这个文本1我想要单独解析这个文本1我也想要这个文本1

我想要这个文本2我想要单独解析这个文本2我也想要这个文本2 soup=BeautifulSoup(html,'html.parser') 对于汤中的p。查找所有('p'): 外部文本=''.join([x.strip()表示p中的x,如果存在(x,Navigablesting)]) 打印(外部文本) 内部文本=p.b.text.strip() 打印(内部文本)
输出:

我想要这个文本1我也想要这个文本1
我想单独解析这个1
我想要这个文本2我也想要这个文本2
我想单独解析这个2


非常感谢,有没有一种方法可以将其实现到一个循环中,以便对整个文档中的所有标记执行相同的操作?是的,您可以。检查编辑。如果这个答案解决了你的问题,请随意接受。谢谢,我的结果中仍有一些标签,你知道为什么吗?你没有提供html,因此我不能在没有实际看到的情况下说任何话。以下是结果:
  • 12分钟
  • 26分钟