2008-12-31 9 views
1

J'ai ces page http://www.elseptimoarte.net/. La page a un champ de recherche, Si je mets par exemple « batman » il me donne des résultats de Recherches avec une URL de chaque résultat: http://www.elseptimoarte.net/busquedas.html?cx=003284578463992023034%3Alraatm7pya0&cof=FORID%3A11&ie=ISO-8859-1&oe=ISO-8859-1&q=batman#978parse html code pour trouver un champ

je voudrais analyser le code html pour obtenir l'URL par exemple de lien firse: Exemple: www.elseptimoarte.net/peliculas/batman-begins-1266.html

Le problème est que je CURL (en bash), mais quand je fais un -L boucle -s http://www.elseptimoarte.net/busquedas.html?cx=003284578463992023034%3Alraatm7pya0&cof=FORID%3A11&ie=ISO-8859-1&oe=ISO-8859-1&q=batman#978 il doesn ne donnez pas le lien.

Une aide?

Merci beaucoup et désolé pour mon anglais!

+0

Qu'est-ce que curl vous donne à la place du lien? – Brian

Répondre

0

Je vais vous donner une réponse en ligne de commande plus approfondie dans une seconde, mais en attendant, avez-vous envisagé d'utiliser Yahoo Pipes? C'est un peu plus qu'une preuve de concept maintenant, mais il a tout ce dont vous avez besoin.

1

Vous n'obtenez pas le lien en utilisant cURL car la page utilise Javascript pour obtenir ces données. En utilisant FireBug, j'ai trouvé la véritable URL here - assez monstrueuse!

1

Ce n'est peut-être pas exactement ce que vous cherchez, mais il me donne la même réponse que votre exemple. Peut-être que vous pouvez l'ajuster en fonction de vos besoins:

De bash, tapez:

$ wget -U 'Mozilla/5.0' -O - 'http://www.google.com/search?q=batman+site%3Awww.elseptimoarte.net' | sed 's/</\ 
</g' | sed -n '/href="http:\/\/www\.elseptimoarte\.net/p' 

la "</g" commence une nouvelle ligne. N'incluez pas l'invite ($). Quelqu'un de plus familier avec sed pourrait faire un meilleur travail que moi. Vous pouvez remplacer la chaîne de requête 'batman' et/ou les chaînes d'URL du site en double en fonction de vos besoins.

Ce qui suit est ma sortie:

<a href="http://www.elseptimoarte.net/peliculas/batman-begins-1266.html" class=l> 
<a href="http://www.elseptimoarte.net/peliculas/batman:-the-dark-knight-30.html" class=l>El Caballero Oscuro (2008) - El Séptimo Arte 
<a href="http://www.elseptimoarte.net/-batman-3--y-sus-rumores-4960.html" class=l>&#39; 
<a href="http://www.elseptimoarte.net/esp--15-17-ago--batman-es-lider-y-triunfadora-aunque-no-bate-record-4285.html" class=l>(Esp. 15-17 Ago.) 
<a href="http://www.elseptimoarte.net/peliculas/batman-gotham-knight-1849.html" class=l> 
<a href="http://www.elseptimoarte.net/cine-articulo541.html" class=l>Se ponen en marcha las secuelas de &#39; 
<a href="http://www.elseptimoarte.net/trailers-de-buena-calidad-para--indiana--e--batman--3751.html" class=l>Tráilers en buena calidad de &#39;Indiana&#39; y &#39; 
<a href="http://www.elseptimoarte.net/usa-8-10-ago--impresionante--batman-sigue-lider-por-4%C2%AA-semana-consecutiva-4245.html" class=l>(USA 8-10 Ago.) Impresionante. 
<a href="http://www.elseptimoarte.net/usa-25-27-jul--increible--batman-en-su-segunda-semana-logra-75-millones-4169.html" class=l>(USA 25-27 Jul.) Increíble. 
<a href="http://www.elseptimoarte.net/cine-articulo1498.html" class=l>¿Aparecerá Catwoman en &#39; 
0

Pepe,

Voici la commande que vous pouvez utiliser pour obtenir ce que vous voulez:

$ wget -U 'Mozilla/5.0' -O - 'http://www.google.com/search?q=batman+site%3Awww.elseptimoarte.net' | sed 's/</\                
</g' | sed -n 's/<a href="\(http:\/\/www\.elseptimoarte\.net[^"]*\).*$/\1/gp' > myfile.txt 

Il y a une légère modification de la commande ci-dessus . Met des sauts de ligne entre les URL, mais il ne serait pas difficile de le changer pour donner votre sortie exacte.

0

curl et wget partagent de nombreuses utilisations. Je suis sûr que les gens ont leurs préférences, mais j'ai tendance à aller d'abord à wget pour ramper, car il a auto-suivi des liens à une profondeur spécifiée et tend à être un peu plus polyvalent avec des pages web de texte commun, tandis que j'utilise quand j'ai besoin d'un protocole moins commun ou que je dois interagir avec des données de formulaire.

Vous pouvez utiliser curl si vous avez des préférences, mais je pense que wget est plus adapté. Dans la commande ci-dessus, remplacez simplement 'wget' par 'curl' et '-U' par '-A'. Omettre '-O -' (je crois que curl est par défaut à stdout, sinon sur votre machine, utilisez son drapeau approprié) et laissez tout le reste pareil. Vous devriez obtenir le même résultat.

0

Il y a Watir pour Java

Et si vous êtes sur # .NET C/VB vous pouvez utiliser WatiN qui est un outil génial de manipulation du navigateur.Il s'agit en quelque sorte d'un framework de test avec des outils pour manipuler le DOM du navigateur et le contourner, mais je crois que vous pouvez également utiliser ceux qui ne font pas partie d'un contexte de «test».