我编写了一个下面发布的脚本,它基本上转到纯文本字典网站并搜索输入的单词并检索定义。唯一的问题是它返回的是关闭的段落标签以及我已经搞砸了很久了。
#!/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'
这将返回带有标签的定义。这里有正确的正则表达式语法来忽略标签吗?
答案 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,或稻草 小提琴。