Как обернуть BeautifulSoup найти операторы в функцию - PullRequest
0 голосов
/ 24 января 2012

Я пишу код BeautifulSoup, чтобы заполнить словарь по результатам html-страницы, и мне нужна некоторая обработка ошибок.Хотя то, что у меня есть, делает работу, я чувствую, что есть лучший способ сделать это.Вот что у меня есть:

    rightcol = result.find("div", {"class":"rightcol"})

    try: mydict['rating'] = rightcol.find("div", {"class":"rating"}).contents[1]['class']
    except AttributeError: pass

    try: mydict['reviews'] = rightcol.find("span", {"class":"reviews"}).contents
    except AttributeError: pass

    try: mydict['address'] = rightcol.find("address").contents
    except AttributeError: pass

    (10+ more statements of the same kind)

То, что я надеюсь сделать, это поместить обработку ошибок в функцию, что-то вроде:

    def process(key, code):
        try: mydict[key] = (execute the BeautifulSoup code, different for each function call)
        except: pass

Однако я не уверен всинтаксис передачи инструкций BeautifulSoup в функцию.Есть идеи?

1 Ответ

2 голосов
/ 24 января 2012

Вы можете поместить функции в dict и вызывать их всякий раз, когда они вам нужны:

def hello(name):
    return 'Hello, ' + name

funcMap = {'greet' : hello}

greeting = funcMap['greet']('Peter')
print greeting # Hello, Peter

Вы можете сделать что-то очень похожее для этого кода здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...