好的,请保持温柔 - 这是我的第一个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不匹配。世界上我做错了什么?
答案 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
。