首页 > 解决方案 > BeautifulSoup, Requests - 下面的代码有什么区别?

问题描述

只是一些简单的虚拟问题,我刚开始学习 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吗?还是还有其他区别?

请对这些有所了解,在此先感谢您。

标签: pythonbeautifulsouppython-requestsurllib

解决方案


它在文档中提到:

在没有 class_ 快捷方式的旧版本 Beautiful Soup 中,您可以使用上面提到的 attrs 技巧。创建一个字典,其“类”的值是您要搜索的字符串(或正则表达式,或其他)。

这对您在问题的第一部分中寻找的内容有很好的解释。


推荐阅读