当前位置: 首页 > 知识库问答 >
问题:

在python中的指定html块之间提取文本

张光辉
2023-03-14

我有下面的html片段,只需要从中间提取文本

<p>Current</p> and <p>Archive</p>

Html块看起来像:

<p>Current</p>
<a href="some link to somewhere 1">File1</a>
<br>
<a href="some link to somewhere 2">File2</a>
<br>
<a href="some link to somewhere 3">File3</a>
<br>
<p>Archive</p>
<a href="Some another link to another file">Some another file</a>

因此,所需的输出应该类似于File1、File2、File3。

这就是我迄今为止所尝试的

import re
m = re.compile('<p>Current</p>(.*?)<p>Archive</p>').search(text)

但没有按预期工作。

有什么简单的解决方案可以在python中指定的html标记块之间提取文本吗?

共有2个答案

巩才捷
2023-03-14
from bs4 import BeautifulSoup as bs


html_text = """
<p>Current</p>
<a href="some link to somewhere 1">File1</a>
<br>
<a href="some link to somewhere 2">File2</a>
<br>
<a href="some link to somewhere 3">File3</a>
<br>
<p>Archive</p>
<a href="Some another link to another file">Some another file</a>"""

a_tag = soup.find_all("a")

text = []
for i in a_tag:
   text.append(get_text())

print (text)

输出:

['File1', 'File2', 'File3', 'Some another file']

BeautifulSoup库对于解析html文件和从中获取文本非常有用。

卫博
2023-03-14

如果您坚持使用regex,可以将其与list comp结合使用,如下所示:

chunk="""<p>Current</p>
<a href="some link to somewhere 1">File1</a>
<br>
<a href="some link to somewhere 2">File2</a>
<br>
<a href="some link to somewhere 3">File3</a>
<br>
<p>Archive</p>
<a href="Some another link to another file">Some another file</a>"""

import re 

# find all things between > and < the shorter the better  
found = re.findall(r">(.+?)<",chunk) 

# only use the stuff after "Current" before "Archive"
found[:] = found[ found.index("Current")+1:found.index("Archive")]

print(found) # python 3 syntax, remove () for python2.7 

输出:

['File1', 'File2', 'File3']
 类似资料:
  • 问题内容: 我有一个字符串: (它的输出超过两行,因此其中必须有一个\ n。 我希望提取标签之间的字符串。在这种情况下,它是7月28日,但是可能是另一个日期或其他某个数字。 1)从字体标签之间提取值的最佳方法是什么?我本以为可以提取和之间的所有内容。 编辑:第二个问题删除。 问题答案: 尽管可以使用正则表达式解析任意HTML,但这通常是一个死亡陷阱。有很多很棒的用于解析HTML的工具,包括Beau

  • 问题内容: 我有以下格式的文本文件: 我想提取.txt文件中DELIMITER1和DELIMITER2之间的每个s块 这是我当前的无效代码: 有任何想法吗? 问题答案: 您可以使用简化这一个正则表达式中,DOTALL标志。 这也利用了非贪婪运算符,因此将找到多个DELIMITER1-DELIMITER2对的非重叠块。

  • 我正在寻找一个正则表达式,它必须在不同类型的HTML标记之间提取文本。 对于前任: <代码> <代码> <代码> 我找到了这个特殊的片段

  • 问题内容: 我想使用Python从HTML文件中提取文本。如果要从浏览器复制文本并将其粘贴到记事本中,我希望得到的输出基本上相同。 我想要比使用正则表达式更强大的功能,而正则表达式可能在格式不正确的HTML上失败。我见过很多人推荐美丽汤,但是使用它时遇到了一些问题。例如,它拾取了不需要的文本,例如JavaScript源。此外,它没有解释HTML实体。例如,我希望&#39; 在HTML源代码中转换为

  • 问题内容: 我有一个像下面这样的文字 [:de] 15岁的BB2女士在holzbauweise的rkische Gulet的眉毛,Annehmlichkeiten的游艇和Eleganz einer的专业游艇,durch的高品质的盲人眉毛,glichen Holzverare的时尚和15岁的女孩密西西比州杜尚卡宾/ WC。Salon and Deck sind ausgesprochen gro脽z

  • 我正在尝试从 html 标签中提取字符串 我知道还有其他类似或甚至相同的问题得到了回答,但这些问题的答案似乎对我不起作用 此输出 不 注意,我使用了来自不同答案的其他正则表达式,得到了相同的结果,我也不熟悉正则表达式,所以这可能是一个无意义的问题。