我有一个字符串:Python字符串操作,提取html标签之间的文本
<font face="ARIAL,HELVETICA" size="-2">
JUL 28 </font>
(它输出超过两行,所以必须有一个\ n在那里
我想提取字符串在<font></font>
标签之间,在这种情况下,它是7月28日,但它可能是另一个日期或其他数字
1)从字体标签之间提取值的最佳方法是什么?我想我可以提取">
和</
之间的所有内容。
编辑:删除第二个问题。
我有一个字符串:Python字符串操作,提取html标签之间的文本
<font face="ARIAL,HELVETICA" size="-2">
JUL 28 </font>
(它输出超过两行,所以必须有一个\ n在那里
我想提取字符串在<font></font>
标签之间,在这种情况下,它是7月28日,但它可能是另一个日期或其他数字
1)从字体标签之间提取值的最佳方法是什么?我想我可以提取">
和</
之间的所有内容。
编辑:删除第二个问题。
虽然有可能来解析任意HTML正则表达式,它往往是一个死亡陷阱。有很多用于解析HTML的工具,包括BeautifulSoup,这是一个Python库,它可以很好地处理破碎的以及良好的HTML。
>>> from BeautifulSoup import BeautifulSoup as BSHTML
>>> BS = BSHTML("""
... <font face="ARIAL,HELVETICA" size="-2">
... JUL 28 </font>"""
...)
>>> BS.font.contents[0].strip()
u'JUL 28'
然后你只需要解析日期:
>>> datetime.strptime(BS.font.contents[0].strip(), '%b %d')
>>> datetime.datetime(1900, 7, 28, 0, 0)
datetime.datetime(1900, 7, 28, 0, 0)
不错!这似乎比正则表达式复杂得多。 –
@FluxCapacitor警告:我上面的'strptime'的第二个参数实际上是一个特定于语言环境的示例。如果您需要语言环境不可知的或不同的区域设置解决方案,请参阅[文档](http://docs.python.org/library/datetime.html#strftime-strptime-behavior)以获取更多详细信息。 – kojiro
是grep的一个选项吗?
grep "<[^>]*>(.*)<\/[^>]*>" file
(。*)应与您的内容匹配。
我在Python中做了所有这些...我使用scrapy来刮网页和深入到达上面的字符串。 –
对不起,我无法帮助你更好。你总是可以使用re(正则表达式)库来获取相同的内容。 – AnthonyHurst
那么,你可以使用子进程,并仍然运行命令 –
这里有一堆选项。尽管您似乎想要一个特定于域的解决方案,但您可以使用像lxml这样的全面的xml解析器。我用正则表达式多走:
import re
rex = re.compile(r'<font.*?>(.*?)</font>',re.S|re.M)
...
data = """<font face="ARIAL,HELVETICA" size="-2">
JUL 28 </font>"""
match = rex.match(data)
if match:
text = match.groups()[0].strip()
现在,你有text
,你可以把它变成一个日期很容易:
from datetime import datetime
date = datetime.strptime(text, "%b %d")
你评论AnthonyHurst的答案,这是来自一个网站。我最近使用了lxml的html解析并取得了很大的成功,我强烈推荐它。 – fahhem
谢谢!我在另一个问题中看到了与正则表达式类似的东西,但无法使其工作。你的解决方案对我来说非常合适缺点是我只能理解它发生了什么。 –
或者,你可以简单地使用Beautiful Soup:
个美丽的汤是一个Python的HTML/XML分析器设计用于快速周转项目,如屏幕刮
如果还有更多的HTML解析工作可能会过度,但是一个不错的选择。 –
使用Scrapy的XPath选择作为http://doc.scrapy.org/en/0.10.3/topics/selectors.html
记录或者你可以利用HTML解析器如BeautifulSoup特别是如果想在面向对象的方式操作的文件。
Python有一个名为HTMLParser
库。也看到张贴在SO以下问题,这是非常类似于你在找什么:
How can I use the python HTMLParser library to extract data from a specific div tag?
注,在的标签并不总是相同 –
这大概应该。是两个不同的问题.. –
你可能是对的,我们不要理会第二个问题,我会在后面担心的。 –