Как программно получить историю редактирования страниц из MusicBrainz, используя python?

Я пытаюсь программно получить страницы истории редактирования с сайта MusicBrainz. (musicbrainzngs библиотека для веб-службы MB, а история редактирования недоступна из веб-службы). Для этого мне нужно войти на сайт MB, используя мое имя пользователя и пароль.

Я пытался использовать mechanize модуль и, используя вторую форму страницы входа в систему (первой является форма поиска), я отправляю свое имя пользователя и пароль; Судя по ответу, я успешно зашел на сайт; однако дальнейший запрос к странице истории редактирования вызывает исключение:

mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

Я понимаю исключение и причину этого. Я несу полную ответственность за то, что не злоупотребляю сайтом (в конце концов, любое использование будет помечено моим именем пользователя), я просто хочу не открывать страницу вручную, сохранять HTML и запускать скрипт на сохраненном HTML. Можно ли преодолеть ошибку 403?

2 ответа

Решение

Если вы хотите обойти сайт robots.txt, вы можете достичь этого, сказав mechanize.Browser игнорировать robots.txt файл.

br = mechanize.Browser()
br.set_handle_robots(False)

Кроме того, вы можете изменить пользовательский агент вашего браузера, чтобы вы не выглядели как робот:

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')]

Имейте в виду, что, делая это, вы на самом деле обманываете сайт, заставляя его думать, что вы действительный клиент.

Лучшее решение - уважать файл robots.txt и просто загружать сами данные редактирования, а не скрести MusicBrainz. Вы можете скачать полную историю изменений здесь:

ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport

Найдите файл mbdump-edit.tar.bz2.

И, как лидер команды MusicBrainz, я хотел бы попросить вас уважать robots.txt и загрузить данные редактирования. Это одна из причин, по которой мы делаем доступными для редактирования данные.

Спасибо!

Другие вопросы по тегам