在我使用beautifulsoup登录某些产品后,我尝试从网页上进行剪贴簿留言。在某些情况下,产品不再可用。该网页仅在没有产品的页面上具有如下所示的div类
<div class="alert alert-danger">
<p>There is an error</p>
我愿意
if soup.find_all('div', {'class': 'alert'}):
print('Alert...')
或
if soup.find_all('div', {'class': 'alert alert-danger'}):
print('Alert...')
但是我得到的'int'对象在产品位置没有属性文本
请求的状态码为200
如何解决此问题,并代替空的产品显示某些内容?
答案 0 :(得分:2)
嗯,也许这是您的解决方案
from bs4 import BeautifulSoup
p = '<div class="alert alert-danger">\n<p>There is an error</p>'
alert = 'alert'
soup = BeautifulSoup(p, 'html.parser').div['class']
if alert in list(soup):
print("Alert....")
答案 1 :(得分:1)
我从两个代码示例中运行了 if 的内容:
soup.find_all('div', {'class': 'alert'})
和
soup.find_all('div', {'class': 'alert alert-danger'})
在两种情况下,我都可以得到:
[<div class="alert alert-danger">
<p>There is an error</p>
</div>]
所以我无法复制您的错误。也许您使用的是 BeautifulSoup 的某些旧版本?
我的版本是 4.7.1 。尝试升级您的 BeautifulSoup 安装。
另一种方法是如何检查文档是否包含div
带有class="alert"
的元素:
if soup.find_all('div', class_='alert'):
print("Alert....")
请注意,关键字参数的末尾包含_
,以便
与 Python 重新定义的单词( class )不同。这是一个相对较新的
BeautifulSoup 的功能。