【发布时间】:2017-11-10 03:09:15
【问题描述】:
所以我一直在开发一个网络爬虫来解析我喜欢的新闻网站的可读内容,并且我在 python2 中大量使用了正则表达式。我访问了https://regexr.com/ 以再次检查我是否有适合此用例的正确表达式,但我不断得到与预期不同的结果,特别是当我交叉引用 regexr 的输出时。这是表达式
re.compile(ur"[\s\S\]*<p.*>([\s\S]+?)<\/p>")
这是我尝试匹配的 html
</figcaption></figure><p>Researchers at MIT and several other
institutions have developed a method for making photonic ...
它并没有最终关闭一段时间,但程序根本没有抓住这个部分,只有在 in 之后
ygen levels</a>, and even blood pressure.</p>
它是否开始抓取 html(编辑:p 元素)。我想我对不同正则表达式引擎的不一致感到困惑,我试图弄清楚何时何地修改我的语法,在这种情况下是为了抓取整个 p 元素,但通常也是如此。这是我第一次在这里发帖,所以我的格式可能不正确,但提前谢谢大家。已经潜伏了一段时间。
【问题讨论】:
-
你的解释很晦涩。如果您将示例附在 regexr.com 上(或 regex101.com 上),这不会造成伤害。提示:尝试捕获标签结尾,首先将其排除在外,例如
<p[^>]*>。此外,您在模式中有一个未关闭的开口(。 -
您为什么要尝试使用正则表达式解析 html...?可能是not a great idea。
-
啊,那么在我们关闭模式开头的括号之前,首先检查是否存在其他内容的函数?而且这里使用的表达式和我在 regexr.com 上测试的一样。感谢您对 regex101.com 的参考,我必须检查一下。有任何其他技巧可以让我的帖子更具体一点吗?
-
@roganjosh 对不起,我猜 parse 是错误的词。我的意思是拼出来。我正在尝试从每一行 html 中捕获我想要的所有元素。
-
@roganjosh 让我崩溃了。我以前用过 BeautifulSoup,但我想更多地使用它。感觉就像我在抽象层的工作上作弊,我真的很想看看我是否可以只用自己的表情来做我需要的事情,但事实证明这很天真。我以前用过 BeautifulSoup 时也有不正常的行为,但这可能是我的错,所以我必须再试一次。谢谢!
标签: python html regex web-crawler