On peut faire exactement comme tu décris, avec deux petits changements liés à tes deux questions :
- Un fichier HTML ressemble à un document XML (d'ailleurs dans certains cas c'est un document XML), c'est à dire qu'il a une structure arborescente dans laquelle tu peux naviguer. C'est plus fiable que faire des recherches de strings (moins de risques de faux positifs, puisqu'en plus d'indiquer un motif tu peux indiquer à quel endroit dans l'arbre tu t'attends à le trouver), mais en pratique ta solution peut être suffisante s'il n'y a aucune ambiguïté sur ce que tu veux rechercher. Au cas où ça t'intéresse, tu peux regarder ce que tu trouves en cherchant "HTML DOM parser" sur ton Google préféré

- Bien sûr, c'est même plus simple que de récupérer les images. Tu as du utiliser wget, qui simule un navigateur web et s'occupe de télécharger une page complète avec tout son contenu, au lieu de simplement prendre le code HTML. Essaie avec curl par exemple, ça devrait se rapprocher davantage de ce que tu cherches.