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



>我正在尝试使用美丽汤中的查找方法获取某个标签的内部文本。当我输入一个变量作为查找的参数时,它返回 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'

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

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

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

(还必须在"raceDate"的值周围添加{ }(

相关内容

最新更新