Почему Python BeautifulSoup объект вызывается? Где определение? - PullRequest
0 голосов
/ 10 апреля 2020

bb и cc в следующем коде равны, почему это так? Суп является объектом, почему он может принимать другой параметр «а» здесь? Суп ('a') - это вызов функции или инициализация другого класса / объекта? Если это вызов функции, я не нашел определения call в классе. Я надеюсь, что вопрос ясен. спасибо.

from bs4 import BeautifulSoup
soup = BeautifulSoup("<html><a href='bla'>sss</a><a>cc</a></html>", 'html.parser')
bb = soup('a')
cc = soup.find_all('a')

1 Ответ

2 голосов
/ 10 апреля 2020

Ну, на самом деле нет никакой разницы, вызов tag является alias для findAll

Проверка исходный код

def __call__(self, *args, **kwargs):
    """Calling a tag like a function is the same as calling its
    find_all() method. Eg. tag('a') returns a list of all the A tags
    found within this tag."""
    return self.find_all(*args, **kwargs)

Причина почему почти developers использует findAll, потому что это на самом деле более читабельно.

...