使用beautifulsoup Python检查HTML中是否存在特定类

使用beautifulsoup Python检查HTML中是否存在特定类,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,我正在写一个脚本,想检查一个特定的类是否存在于html中 from bs4 import BeautifulSoup import requests def makesoup(u): page=requests.get(u) html=BeautifulSoup(page.content,"lxml") return html html=makesoup('https://www.yelp.com/biz/soco-urban-lofts-dallas') print

我正在写一个脚本,想检查一个特定的类是否存在于html中

from bs4 import BeautifulSoup
import requests

def makesoup(u):
    page=requests.get(u)
    html=BeautifulSoup(page.content,"lxml")
    return html
html=makesoup('https://www.yelp.com/biz/soco-urban-lofts-dallas')

print("3 star",html.has_attr("i-stars i-stars--large-3 rating-very-large")) #it's returning False
res = html.find('i-stars i-stars--large-3 rating-very-large")) #it's returning NONE
请指导我如何解决这个问题?如果我以某种方式获得了title(title=“3.0星级”),这对我也适用。控制台HTML的屏幕截图


has\u attr
是一种检查元素是否具有所需的属性的方法
class
是一个属性,
i-stars i-stars--large-3 rating very large
是它的

find
需要的是类值,而不是类值。因此,您应该改为使用
html.find('div.i-stars.i-stars--large-3.rating very large')
。这是因为您正在寻找一个包含所有这些类的
div

from bs4 import BeautifulSoup
import requests

def makesoup(u):
    page=requests.get(u)
    html=BeautifulSoup(page.content,"lxml")
    return html
html=makesoup('https://www.yelp.com/biz/soco-urban-lofts-dallas')
res = html.find(class_='i-stars i-stars--large-3 rating-very-large')
if res:
    print("3 star", 'whatever you want print')
输出:


在获得准确的课程时遇到了类似的问题。它们可以作为字典对象带回,如下所示

html = '<div class="i-stars i-stars--large-3 rating-very-large" title="3.0 star rating">'
soup = BeautifulSoup(html, 'html.parser')
find = soup.div
classes = find.attrs['class']
c1 = find.attrs['class'][0]
print (classes, c1)
html=''
soup=BeautifulSoup(html,'html.parser')
find=soup.div
classes=find.attrs['class']
c1=find.attrs['class'][0]
打印(类别,c1)

仍不返回任何内容。请尝试
查找所有内容
而不是
查找
,并告诉我此行为是否仍然存在。它返回的是带有查找所有内容的空列表,这可能只意味着此元素没有我们认为它们具有的类。可能其中一个是错误的,或者请求中的HTML文件有问题?我附上了一个屏幕截图,在打印HTML时,我发现“I-stars I-stars——大3评级非常大”,但为什么find函数没有得到它(它正在工作,但每次都会打印“3星,你想打印什么就打印什么”。我如何检查class=“I-stars I-stars--large-3 rating very large”是class=“rating info clearfix”的内部类?
3 star whatever you want print
html = '<div class="i-stars i-stars--large-3 rating-very-large" title="3.0 star rating">'
soup = BeautifulSoup(html, 'html.parser')
find = soup.div
classes = find.attrs['class']
c1 = find.attrs['class'][0]
print (classes, c1)