J'ai une liste de sites Web pour chaque membre du Congrès américain que je ramasse par programmation pour récupérer des adresses. La plupart des sites ont des balisages sous-jacents différents, mais ce n'était pas un problème au départ jusqu'à ce que je commence à voir que des centaines de sites ne donnaient pas les résultats attendus pour le script que j'avais écrit. Après avoir pris plus de temps pour évaluer les causes potentielles, j'ai trouvé qu'appeler strip_tags()
sur les résultats de file_get_contents()
effaçait la plupart de la source de la page plusieurs fois! Ce n'était pas seulement enlever le HTML, c'était enlever le non-HTML que je voulais gratter!Lorsque strip_tags() Burns a Haystack
J'ai donc retiré l'appel à strip_tags()
, substitué un appel pour supprimer tous les caractères non alphanumériques et a donné au processus une autre exécution. Il a trouvé d'autres résultats, mais il manquait encore beaucoup. Cette fois, c'était parce que mes expressions régulières ne correspondaient pas aux motifs désirés. Après avoir regardé le code retourné, j'ai réalisé que j'avais les restes d'attributs HTML entremêlés dans le texte, brisant mes schémas.
Y a-t-il un moyen de contourner cela? Est-ce le résultat d'un HTML malformé? Puis-je faire quelque chose à ce sujet?