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