如何在Beautiful Soup的find_all中使用变量?求解决方案
问题原因及解决方案
失效原因
你写的代码里,把"Class_='m-3'"当成字符串传给了find_all,但这个方法的第一个参数默认是标签名。也就是说,BeautifulSoup会尝试查找名为Class_='m-3'的HTML标签,这显然不存在,所以返回空列表。
正确的变量用法
方式1:直接传递属性值变量
如果只是要指定class属性,把属性值单独存成变量,然后用class_关键字参数传递(因为class是Python的保留关键字,所以BeautifulSoup用class_代替):
cls_value = 'm-3' product_list = soup.find_all(class_=cls_value)
方式2:用字典动态传递属性
如果需要动态切换不同的属性(比如有时查class,有时查id),可以把属性键值对存在字典里,用解包传递:
# 可以根据需求修改字典里的内容 attrs = {'class': 'm-3'} product_list = soup.find_all(**attrs)
内容的提问来源于stack exchange,提问作者Hey Hey
相关产品推荐
相关产品推荐

