我正在尝试编写一个 Python 解析器来从 html 页面中提取一些信息。
它应该从 <p itemprop="xxx"> 之间提取文本和 </p>
我使用正则表达式:
m = re.search(ur'p>(?P<text>[^<]*)</p>', html)
但是如果它们之间是另一个标签,它就无法解析文件。例如:
<p itemprop="xxx"> some text <br/> another text </p>
据我了解[^<]仅对一个符号异常(exception)。如何写“除了 </p> 之外的所有内容”?
请您参考如下方法:
您可以使用:
m = re.search(ur'p>(?P<text>.*?)</p>', html)
这是一个惰性匹配,它会匹配直到 </p> 之前的所有内容.您还应该考虑使用像 BeautifulSoup 这样的 HTML 解析器。安装后,可以与 CSS Selectors 一起使用像这样:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
m = soup.select('p[itemprop="xxx"]')
