我使用OutWit Hub从网站上抓取公司名称。
在某些页面中,HTML标记如下:
<p style="font-weight: bold;">COMPANY NAME</p>
而在其他页面中:
<span style="font-weight: bold;">COMPANY NAME</span>
所有页面都使用上述两个选项之一,但绝不会同时使用这两个选项。
如果您不熟悉OutWit Hub,它可以通过询问之前的标记和您想要的信息之后的标记来工作。
我试图创建一个可以检索公司名称的正则表达式,无论是在之前还是之后使用这些标记中的哪一个。
到目前为止,我已经尝试了这个&#39;之前&#39;标签,但它不起作用:
/[<p style="font-weight: bold;">]|[<p>Name of Company: <span style="font-weight: bold;">]/
有人可以帮忙吗?
答案 0 :(得分:1)
丢失方括号([...]
),这些用于指定character class or character set,而不是字符序列。
/<p style="font-weight: bold;">|<p>Name of Company: <span style="font-weight: bold;">/
有关理解和调试正则表达式的帮助,请查看Regexpr。
但是,正如其他人所评论的那样,正则表达式并不是解析HTML的最可靠方法。例如,您如何知道页面上永远不会有任何其他段落或跨度的样式为font-weight: bold
?
如果您了解C#,那么HTML Agility Pack是一个用于解析HTML的有用库。但是,对你的需求可能有点过分了。
答案 1 :(得分:0)
你可以使用这个正则表达式&amp;获取第二组数据以获取公司名称:
^(<p style="font-weight: bold;">|<span style="font-weight: bold;">)(.*)(</p>|</span>)