0

以前は文字列でキーワードを検索できましたが、リストを使用して検索すると問題が発生します。このエラーが発生し続けます。

TypeError: 'in <string>' requires string as left operand, not bool

私は考えられるすべての解決策を試しましたが、これが私が今いるところです:

from BeautifulSoup import BeautifulSoup
import urllib2

keywords = ['diy','decorate', 'craft', 'home decor', 'food']

def get_tags(blog_soup):
    tags_html = blog_soup.find('div', attrs = {'style': 'margin-left: 60px; margin-bottom: 15px;'})
    tags = [tag.string for tag in tags_html.findAll('a')]
    string_tags = str(' '.join(tags))
    if any(keywords) in string_tags:
        print url

url = 'http://technorati.com/blogs/blog.mjtrim.com'
soup = BeautifulSoup(urllib2.urlopen(url).read())

get_tags(soup)
4

1 に答える 1

2

これを機能させるための最小限の変更any(keywords) in string_tagsとして、次のように変更できます。

any(keyword in string_tags for keyword in keywords)

または、セットを使用する代替手段:

keywords = set(['diy','decorate', 'craft', 'home decor', 'food'])

def get_tags(blog_soup):
    tags_html = blog_soup.find('div', attrs = {'style': 'margin-left: 60px; margin-bottom: 15px;'})
    tags = [tag.string for tag in tags_html.findAll('a')]
    if keywords.intersection(tags):
        print url
于 2013-09-04T18:47:47.000 に答える