Я попробовал ваш код, второй пример, и проблема в кавычках, которые вы используете. Для меня они апострофы (‘, кодовая точка Unicode \ u2019), в то время как интерпретатору python требуются одинарные (') или двойные (") кавычки.
Меняя их, я могу найти тег:
>>> bs.find('td', attrs={'class': 'CURRENTLOCATION'})
<td class="CURRENTLOCATION"><img align="MIDDLE" src="..\Images\FolderOpen.bmp"/> Metrics</td>
О вашем первом примере. Я не знаю, где вы найдете ссылку на метод find_element_by_class_name
, но, похоже, он не реализован классом BeautifulSoup. Вместо этого класс реализует специальный метод __getattr__
, который вызывается каждый раз, когда вы пытаетесь получить доступ к несуществующему атрибуту. Вот выдержка из метода:
def __getattr__(self, tag):
#print "Getattr %s.%s" % (self.__class__, tag)
if len(tag) > 3 and tag.endswith('Tag'):
#
# We special case contents to avoid recursion.
elif not tag.startswith("__") and not tag == "contents":
return self.find(tag)
Когда вы пытаетесь получить доступ к атрибуту find_element_by_class_name
, вы фактически ищете тег с тем же именем.