【发布时间】:2013-07-20 01:26:24
【问题描述】:
我一直在尝试生成一个有效的正则表达式来查找 html 标签的属性 现在有一段时间了,但他们似乎都以某种方式失败了。
使用正则表达式是因为加载 beautifulsoup 需要很长时间才能检查一个 html 标签。
这是需要检查的标签/属性的示例:
<meta content="http://domain.com/path/path/file.jpg" rnd_attr="blah blah"
property="og:image"/>
正则表达式如何在确保标签为“og:image”的同时检索此标签的内容。
对不起,如果这个问题有点幼稚,或者生成正则表达式完全不可行。
奖励:除了 BeautifulSoup,python 中还有哪些其他快速/有效的 DOM 解析器替代方案?
谢谢。
【问题讨论】:
-
最好的方法似乎是使用 lxml 和他的 XPath 功能,而不是 BeautifulSoup 或正则表达式。
-
啊,好吧,我想一个后续问题是:如果 lxml 更快,为什么 BeautifulSoup 如此受欢迎/广泛使用?是不是功能少了?
-
困难的部分是试图弄清楚你到底想要完成什么。请尝试更清晰,更具体。 “此标签的内容”是指 content 属性的值还是标签中的所有内容? “确保标签属于 og:image”是指它有一个值为“og:image”的 property 属性吗?正则表达式是一次检查一个标签,还是检索页面中符合条件的所有标签的“内容”?
-
并不是说生成正则表达式很困难,只是正则表达式会非常复杂,并且仍然无法针对每种情况正确解析 HTML。正则表达式是从任意 HTML 解析和提取数据的错误工具。
标签: python regex beautifulsoup