Python re regex匹配问题

时间:2014-07-29 20:24:04

标签: python html regex html-parsing expression

好的,请保持温柔 - 这是我的第一个stackoverflow问题,我几个小时都在努力。我确定答案显而易见,盯着我看,但我放弃了。

我正在尝试从名称网站抓取网页中的元素(即确定名称的性别)。

我写的python代码在这里:

import re
import urllib2

response=urllib2.urlopen("http://www.behindthename.com/name/janet")
html=response.read()
print html

patterns = ['Masculine','Feminine']

for pattern in patterns:
print "Looking for %s in %s<<<" % (pattern,html)

    if re.findall(pattern,html):
        print "Found a match!"
        exit
    else:
        print "No match!"

当我转储html时,我在那里看到女性,但是re.findall不匹配。世界上我做错了什么?

1 个答案:

答案 0 :(得分:1)

Do not parse an HTML with regex,使用专门的工具 - HTML解析器。

使用BeautifulSoup的示例:

from urllib2 import urlopen
from bs4 import BeautifulSoup

url = 'http://www.behindthename.com/name/janet'
soup = BeautifulSoup(urlopen(url))

print soup.select('div.nameinfo span.info')[0].text  # prints "Feminine"

或者,你可以find an element by text

gender = soup.find(text='Feminine')

然后,看看是否None(未找到):gender is None