BeautifulSoup, Requests - В чем разница между следующим кодом? - PullRequest
1 голос
/ 10 июля 2019

Просто несколько быстрых пустых вопросов, я только начал изучать BeautifulSoup и увидел, что есть разные подходы для выполнения одной и той же вещи, и все подходы работают нормально.

Мне любопытно узнать разницу между ними:

Во-первых: я протестировал следующие три строки кода, которые имеют одинаковую функциональность, и они успешно работают с тем же результатом.Вопрос в чем разница?

shipping_price = container.find('li', {'class':'price-ship'}).text.strip()
shipping_price = container.find('li', 'price-ship').text.strip()
shipping_price = container.find('li', class_='price-ship').text.strip()

Есть ли что-то похожее на одну из этих трех строчек кода из предыдущих версий, которая скоро потеряет поддержку и будет устаревшей?любой из вышеперечисленных кодов предлагает дополнительную функциональность?или они просто идентичны.

Во-вторых: это немного по-другому, и дело не в BeautifulSoup:

uClient = urlopen(my_url)
page_html = uClient.read()
uClient.close()

вместо:

page_html = requests.get(my_url).text

Я вижу, чтоесли я заменю позднее на прежнее.Там нет никакой разницы между результатом.Поэтому в чем разница?Разве только в приведенном выше коде они используют другой модуль для захвата my_url?или есть и другие различия?

Пожалуйста, проясните это, заранее спасибо.

1 Ответ

1 голос
/ 10 июля 2019

Упоминается в документации :

В старых версиях Beautiful Soup, в которых нет класса_ ярлык, вы можете использовать трюк attrs, упомянутый выше. Создать словарь, значение которого для «класса» является строкой (или регулярным выражение, или что-то еще) вы хотите найти.

Это хорошее объяснение того, что вы ищете в первой части вопроса.

...