Je crée actuellement un nœud.js Webscraper / proxy, mais j'ai du mal à analyser des URL relatives trouvées dans la partie de script de la source, j'ai pensé que la regex ferait le tour. Bien que cela soit inconnu, comment j'y réaliserais. p>
Y a-t-il de toute façon je peux y aller? p>
Aussi, je suis ouvert à un moyen plus facile de le faire, car je suis assez déflumer sur la manière dont les autres proxy analysent les sites Web. Je pensais que la plupart ne sont que des racleurs de site glorifiés qui peuvent lire la source d'un site un relais de relais tous les liens / formulaires à la proxy. P>
5 Réponses :
Si vous utilisez une regex pour trouver toutes les URL non absolues, vous pouvez ensuite les préfixer avec l'URL actuelle et cela devrait être. P>
Les URL dont vous avez besoin pour réparer seraient celles qui ne démarrent pas non plus avec un Par exemple, disons que vous grattez Pour une regex pour gratter les URL de la page, il y a probablement beaucoup de bonnes values disponibles si vous Google un peu donc je ne vais pas commencer à inventer un pauvre ici :) p> / code> ou
http (s): // code> (ou d'autres marqueurs de protocole, si vous vous souciez d'eux) p>
http://www.example.com/ code>. Si vous rencontrez une URL relative, disons
FOO / BAR CODE>, vous préfixeriez simplement l'URL étant raclée à elle comme:
http://www.example.com/foo/bar < / code> p>
@ Rob-w Si URL de base comme " exemple.org/user/Account " (dernier / dans href) alors il ne sera pas converti en absolu. Ex.: Modifier C'est donner: .org / utilisateur / edit.html Il devrait être exemple.org/user /account/edit.html
Remarque pour OP, car il a demandé une telle fonction: Changer Deux fonctions seront affichées ci-dessous (le guide d'utilisation est contenu dans le code). Assurez-vous de ne sauter aucune partie de l'explication de cette réponse pour bien comprendre le comportement de la fonction. P> p> Cas / exemples: P> La fonction convertit les chemins relatifs sur P> base_url code> à l'URL de base de votre proxy afin d'atteindre les résultats souhaités. EM > p>
rel_to_abs (URL) code> - cette fonction renvoie des URL absolues. Lorsqu'une URL absolue avec un protocole couramment approuvé est passée, elle renvoie immédiatement cette URL. Sinon, une URL absolue est générée à partir du
base_url code> et de l'argument de la fonction. Les URL relatives sont correctement analysées (
../ code>;
./ code>;
. Code>; // / code>). Li >
remplaforme_all_rel_by_abs code> - cette fonction va analyser
URL () code>, liens et des ressources externes. Voir le code pour une liste complète des instances analysées. Voir Cette réponse forte> pour une implémentation ajustée sur
rel_to_abs code> - d'analyse des URL relatives em> strong>
http://foo.bar code>. Déjà une URL absolue, ainsi retournée immédiatement. Li>
/ doo code> relatif à la racine: retourne la racine actuelle + fournie une URL relative. LI>
./ meh code> relatif au répertoire actuel. LI>
../ booh code> par rapport au répertoire parent. LI>
ul>
../ code> et effectue un recherche-and-remplacer (
http: // domaine / sous / autre-tout-but-a- SLASH /../ ME CODE> TO
HTTP: // Domaine / SUB / ME CODE>). P>
Remplacer_All_Rel_By_abs code> - convertir toutes les occurrences pertinentes des URL em> strong>
URL à l'intérieur des instances de script (
J'utiliserais un véritable analyseur, pas une regex. Il existe des analyseurs HTML pour le nœud.