¿Cómo recuperar mediante programación páginas del historial de edición de MusicBrainz usando Python?
-
10-12-2019 - |
Pregunta
Estoy intentando recuperar mediante programación las páginas del historial de edición del sitio web MusicBrainz.(musicbrainzngs
es una biblioteca para el servicio web MB y no se puede acceder al historial de edición desde el servicio web).Para ello, necesito iniciar sesión en el sitio web de MB con mi nombre de usuario y contraseña.
He intentado usar el mechanize
módulo, y usando el segundo formulario de la página de inicio de sesión (el primero es el formulario de búsqueda), envío mi nombre de usuario y contraseña;Según la respuesta, parece que inicié sesión correctamente en el sitio;sin embargo, una solicitud adicional a una página del historial de edición genera una excepción:
mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
Entiendo la excepción y el motivo de la misma.Asumo toda la responsabilidad de no abusar del sitio (después de todo, cualquier uso será etiquetado con mi nombre de usuario), solo quiero evitar abrir manualmente una página, guardar el HTML y ejecutar un script en el HTML guardado.¿Puedo superar el error 403?
Solución
Si desea eludir las restricciones del sitio robots.txt
, puedes lograr esto diciéndole a tu mechanize.Browser
ignorar el robots.txt
archivo.
br = mechanize.Browser()
br.set_handle_robots(False)
Además, es posible que desees modificar el agente de usuario de tu navegador para no parecer un robot:
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
Tenga en cuenta que al hacer esto, en realidad está engañando al sitio web haciéndole creer que es un cliente válido.
Otros consejos
La mejor solución es respetar el archivo Robots.txt y simplemente descargue los datos de edición en sí y no la pantalla Scrape MusicBrainz.Puede bajar el historial de edición completo aquí:
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport