Python - 通过HTML标签循环并使用IF

时间:2015-07-30 16:17:01

标签: python html string web beautifulsoup

我正在使用python从网页中提取数据。该网页有一个重复出现的html div标签,其中class ="结果"其中包含其他数据(如位置,组织等)。我能够使用漂亮的汤成功循环使用html但是当我添加一个条件时,如果某个单词中存在某个单词(例如,NHS'例如),则它不会返回任何内容 - 尽管我知道某些段包含它。这是代码:

soup = BeautifulSoup(content)
details = soup.findAll('div', {'class': 'result'})

for detail in details:
    if 'NHS' in detail:
        print detail

希望我的问题有道理......

1 个答案:

答案 0 :(得分:2)

findAll返回标记列表,而不是字符串。也许将它们转换为字符串?

s = "<p>golly</p><p>NHS</p><p>foo</p>"
soup = BeautifulSoup(s)
details = soup.findAll('p')
type(details[0])    # prints: <class 'BeautifulSoup.Tag'>

您正在寻找标签中的字符串。最好在字符串中查找字符串......

for detail in details:
    if 'NHS' in str(detail):
        print detail