Python 使用变量作为soup.find()的输入时,不返回任何变量,但使用相同的str值作为输入有效

Python 使用变量作为soup.find()的输入时,不返回任何变量,但使用相同的str值作为输入有效,python,beautifulsoup,Python,Beautifulsoup,我试图通过在Beauty Soup中使用find方法来获取某个标记的内部文本。当我输入一个变量作为find的参数时,它将返回None,但是使用相同文本的str输入将返回我想要的结果。为什么会这样 以下是代码片段: soup = BeautifulSoup(raceResults, 'html.parser') racedetdict={ "courseGoing": '{"class": "rp-raceTimeCourseName_condition"}', "rac

我试图通过在Beauty Soup中使用find方法来获取某个标记的内部文本。当我输入一个变量作为find的参数时,它将返回None,但是使用相同文本的str输入将返回我想要的结果。为什么会这样

以下是代码片段:

    soup = BeautifulSoup(raceResults, 'html.parser')

racedetdict={
    "courseGoing": '{"class": "rp-raceTimeCourseName_condition"}',
    "raceDate" :  '"class": "rp-raceTimeCourseName__date"',
    "courseName" : '{"class": re.compile("rp-raceTimeCourseName__name")}',
    "raceDistance" : '{"class": "rp-raceTimeCourseName_distance"}'
}


for key, val in racedetdict.items():
    print("")
    print(val)
    out1 =  soup.find(attrs={"class": "rp-raceTimeCourseName_condition"})
    print(out1.get_text().strip())
    out2 = soup.find(attrs=val)
    print("")
    print(out2.get_text().strip())   
输出:

{"class": "rp-raceTimeCourseName_condition"}    
Standard To Slow

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "<stdin>", line 25, in GetRaceResults
AttributeError: 'NoneType' object has no attribute 'get_text'

基于词典的迭代实际上并没有使用相同的值字符串进行查找-racedettict中的值是字符串,而不是字典。删除值上的引号,它应该开始工作。所以改变

racedetdict={
    "courseGoing": '{"class": "rp-raceTimeCourseName_condition"}',
    "raceDate" :  '"class": "rp-raceTimeCourseName__date"',
    "courseName" : '{"class": re.compile("rp-raceTimeCourseName__name")}',
    "raceDistance" : '{"class": "rp-raceTimeCourseName_distance"}'
}

还必须在“raceDate”的值周围添加{}`

racedetdict={
    "courseGoing": {"class": "rp-raceTimeCourseName_condition"},
    "raceDate" :  {"class": "rp-raceTimeCourseName__date"},
    "courseName" : {"class": re.compile("rp-raceTimeCourseName__name")},
    "raceDistance" : {"class": "rp-raceTimeCourseName_distance"}
}