Как программно получить страницы истории редактирования из MusicBrainz с помощью Python?
-
10-12-2019 - |
Вопрос
Я пытаюсь программно получить страницы истории редактирования с веб-сайта MusicBrainz.(musicbrainzngs
— это библиотека для веб-службы MB, и история редактирования недоступна из веб-службы).Для этого мне нужно войти на сайт МБ, используя свое имя пользователя и пароль.
Я пробовал использовать mechanize
модуль и, используя вторую форму страницы входа (первая — форма поиска), я отправляю свое имя пользователя и пароль;судя по ответу, я успешно захожу на сайт;однако дальнейший запрос на страницу истории редактирования вызывает исключение:
mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
Я понимаю исключение и его причину.Я беру на себя полную ответственность за то, чтобы не злоупотреблять сайтом (в конце концов, любое использование будет отмечено моим именем пользователя), я просто хочу избежать открытия страницы вручную, сохранения HTML и запуска сценария на сохраненном HTML.Могу ли я преодолеть ошибку 403?
Решение
Если вы хотите обойти защиту сайта 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 и просто загрузите саму редактирование данных, а не экран Scrape MusicBrainz.Вы можете загрузить полную историю редактирования здесь:
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport