Where to get models with weights instead of only weights? What's the purpose of .h5 files?
There are several options when saving and loading a keras model, as explained at https://www.tensorflow.org/guide/keras/save_and_serialize:

save the whole configuration, including the architecture, weights and even the last training state
but also the model architecture and the weights can be saved as independent files, and that is what you might have loaded: an .h5 with only the weights, and you also need the .json with the model architecture, based on the snippet below:

-model architecture and model weights to disk as separate files, which is what it might be done by the user who trained the model:
json_config = model.to_json()
with open('model_config.json', 'w') as json_file:
    json_file.write(json_config)
# weights saving to disk
model.save_weights('path_to_my_weights.h5')

So you need to do the following:
-load the model as follows (you need the model json also):
with open('model_config.json') as json_file:
    json_config = json_file.read()
new_model = keras.models.model_from_json(json_config)
new_model.load_weights('path_to_my_weights.h5')