existe wget en python???
Arnau Sanchez
arnau en ehas.org
Lun Nov 20 17:29:04 CET 2006
joana salgado gomez escribió:
> efectivamente se pueden bajr webs siempre y cuando le´pases la
> direccion exacta que te quieres bajar pero sabes si se pueden bajar
> todas las web que contengan una palabra determinada???? es decir hacer
> busquedas desde python, en linux seria algo asi:
>
> lynx --dump 'http://www.google.com/search?q=recetas+de+cocina'
Eso que pides es un web spider/crawler. Buscando en el repositorio
python aparece éste:
http://cheeseshop.python.org/pypi/spider.py
No le he probado nunca, así que no te puedo decir qué tal funciona.
Personalmente, no se me caen los anillos por llamar a aplicaciones
externas (con el módulo subprocess, por ejemplo) que sé que lo harán
bien; probaría con wget o curl. Sólo en casos especiales (por ejemplo,
en los que necesitas un control muy fino de lo que está ocurriendo) no
es viable llamar a otros programas.
Pero no pretendas darle la dirección de google al web crawler y que te
lo haga todo. Vamos, poder puedes, pero es muy rudo. Primero descarga el
HTML de la búsqueda, parséalo y obtén los URL de interés (por ejemplo
con el BeautifulSoup, que ya te comentaban en la lista), y finalmente
llamas al crawler. Creo que google tiene un API para obtener URLs
directamente, pero no sé más detalles.
En este caso concreto, yo jugaría un rato con la shell. Por ejemplo, con
este comando se bajan las 100 primeras webs (lo de ponerlo todo en una
linea es muy cutre, sólo es de muestra):
lynx --dump "http://www.google.com.pe/search?num=100&q=recetas+cocina" \
| recode iso-8859-1| grep " - [[:digit:]]*k - " | sed "s/ - .*$//" \
| xargs -i wget -r -p -e "robots=off" -U "Mozilla" "{}"
Ojo, que no te digo que no lo hagas en python, pero quizá para salir del
paso ya te sirva.
arnau
Más información sobre la lista de distribución Python-es