2008-12-02 10 views
4

Je veux essentiellement araignée mon site local et créer une liste de tous les titres et les URL comme dans:plus rapide pour obtenir la liste des <title> valeurs de toutes les pages du site localhost

 
http://localhost/mySite/Default.aspx  My Home Page 
http://localhost/mySite/Preferences.aspx My Preferences 
http://localhost/mySite/Messages.aspx  Messages 

Je suis sous Windows . Je suis ouvert à tout ce qui fonctionne - une application console C#, PowerShell, un outil existant, etc. Nous pouvons supposer que la balise existe dans le document.

Note: J'ai besoin de spider les fichiers puisque le titre peut être défini dans le code plutôt que le balisage.

+0

Ce serait assez facile à faire avec les outils en ligne de commande Unix. Avez-vous accès à ceux-ci, peut-être via cygwin? –

Répondre

5

Un script Bash Cygwin rapide et sale qui fait le travail:

#!/bin/bash 
for file in $(find $WWWROOT -iname \*.aspx); do 
    echo -en $file '\t' 
    cat $file | tr '\n' ' ' | sed -i 's/.*<title>\([^<]*\)<\/title>.*/\1/' 
done 

Explication: ce trouve chaque fichier .aspx dans le répertoire racine wwwroot $, remplace toutes les nouvelles lignes avec des espaces afin qu'il n'y ait pas de nouvelles lignes entre <title> et </title>, puis récupère le texte entre ces balises.

+0

Cela ne semble pas fonctionner. Qu'est-ce que je fais mal? – Larsenal

0

Ok, je ne suis pas familier avec Windows, mais pour vous mettre dans la bonne direction: utiliser une transformation XSLT avec

< xsl: value-of select = "/ tête/title"/> dans là pour récupérer le titre ou si vous le pouvez, utilisez le XPath '/ head/title' pour récupérer le titre.

3

Je pense qu'un script similaire à what Adam Rosenfield suggested est ce que vous voulez, mais si vous voulez les URL réelles, essayez d'utiliser wget. Avec quelques options appropriées, il imprimera une liste de toutes les pages sur votre site (plus les télécharger, que vous pouvez peut-être supprimer avec --spider). Le programme wget est disponible via l'installateur Cygwin habituel.

+0

Ouais, c'est ce que j'essayais de travailler pour poster ici! Voici un extrait: site = mysite.com wget --recursive --accept \ *. Html http: // $ site; pour le fichier dans $ (find $ site -name * .html); do // corps pour adam – DustinB

0

J'utiliserais wget comme détaillé ci-dessus. Assurez-vous que vous n'avez aucun spider traps sur votre site.

0

vous devriez envisager d'utiliser shell scrapy

départ

http://doc.scrapy.org/intro/tutorial.html

dans la console a mis quelque chose comme ceci:

hxs.x ('/ html/head/titre/texte () '). extract()

si vous voulez que tous les titres, vous devriez faire une araignée ... vraiment facile.

Pensez aussi à passer à linux: P