Как программно получить историю редактирования страниц из 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 и загрузить данные редактирования. Это одна из причин, по которой мы делаем доступными для редактирования данные.
Спасибо!