Python正则表达式不包括标签

时间:2014-05-02 18:42:16

标签: python html regex web-scraping html-parsing

我编写了一个下面发布的脚本,它基本上转到纯文本字典网站并搜索输入的单词并检索定义。唯一的问题是它返回的是关闭的段落标签以及我已经搞砸了很久了。

#!/usr/bin/python
import urllib2
import re
import sys


word = 'Xylophone'
page = urllib2.urlopen('http://www.mso.anu.edu.au/~ralph/OPTED/v003/wb1913_'+word[0].lower()+'.html')
html = page.read()

match = re.search(r'<P><B>'+word+'</B>.............(.*)', html)

if match: 
    print match.group(1)
else: print 'not found'

这将返回带有标签的定义。这里有正确的正则表达式语法来忽略标签吗?

1 个答案:

答案 0 :(得分:3)

先决条件:阅读RegEx match open tags except XHTML self-contained tags着名话题。

由于它是一个你正在解析的html页面,我会使用一个特定的工具 - HTML parser

例如,BeautifulSoup

import urllib2
from bs4 import BeautifulSoup

word = 'Xylophone'
page = urllib2.urlopen('http://www.mso.anu.edu.au/~ralph/OPTED/v003/wb1913_'+word[0].lower()+'.html')
soup = BeautifulSoup(page)

print soup.find('b', text=word).parent.text

打印:

  

Xylophone(俄语)俄罗斯人,波兰人和普通人之间的共同乐器   鞑靼,由一系列木条或玻璃条毕业   长度与音阶,搁在稻草带上,并击中   用两把小锤子。叫德国strohfiedel,或稻草   小提琴。