2012-03-10 2 views
0

나는 프로그래밍 방식으로 MusicBrainz 웹 사이트에서 편집 기록 페이지를 검색하려고합니다. (musicbrainzngs은 MB 웹 서비스 용 라이브러리이며 웹 서비스에서 편집 기록에 액세스 할 수 없습니다). 이를 위해 사용자 이름과 암호를 사용하여 MB 웹 사이트에 로그인해야합니다.Python을 사용하여 MusicBrainz에서 편집 기록 페이지를 프로그래밍 방식으로 가져 오는 방법은 무엇입니까?

mechanize 모듈을 사용해 보았습니다. 로그인 페이지의 두 번째 양식 (첫 번째 양식은 검색 양식)을 사용하여 사용자 이름과 암호를 제출합니다. 응답에서 사이트에 성공적으로 로그인 한 것으로 보입니다. 그러나 편집 기록 페이지에 대한 추가 요청은 예외를 발생시킵니다.

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

나는 예외와 그 이유를 이해합니다. 나는 사이트를 악용하지 않는다는 전적인 책임을진다. (어쨌든 사용은 내 사용자 이름으로 태그가 붙을 것이다.) 나는 수동으로 페이지를 열지 않고, HTML을 저장하고 저장된 HTML에 스크립트를 실행하는 것을 피하고자한다. 403 오류를 극복 할 수 있습니까?

답변

1

사이트의 robots.txt을 우회하려면 mechanize.Browserrobots.txt 파일을 무시하고이를 알리면됩니다.

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

것은이 일을 할 때, 당신이 실제로 사고로 웹 사이트를 속여 있다는 것을 유의하십시오 :

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

또한, 당신은 당신이 로봇처럼 해달라고 귀하의 브라우저의 사용자 에이전트를 변경 할 수 있습니다 너는 유효한 고객이야.

+0

답변과 경고에 감사드립니다. 이것은 그것을한다. – tzot

2

더 나은 해결책은 robots.txt 파일을 존중하고 단순히 편집 데이터 자체를 다운로드하고 ScreenBreakz를 스크랩하지 않는 것입니다. 당신은 여기 아래에 전체 편집 기록을로드 할 수 있습니다 : 파일 mbdump-edit.tar.bz2에 대한

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

봐.

그리고 MusicBrainz 팀의 리더로서 robots.txt를 존중하고 편집 데이터를 다운로드하도록 요청드립니다. 편집 데이터를 다운로드 할 수있는 이유 중 하나입니다.

감사합니다.

+0

로드는 약 ** 90 ** 요청 (일부 녹음 편집의 첫 번째 페이지 만 해당) ** 달 **에있을 것이며 일부 PUID 연관 또는 분리가 잘못되었다는 점을 확인합니다. 최근의 충분한 데이터는 제 목적을위한 거의 요구 사항입니다. 난 단지 내가 수동으로 할 일을 자동화하고 싶다. 그러나 더 최근의 데이터를 사용할 수있게 될 때마다 1.5 GiB의 데이터를 다운로드하는 것을 선호한다면 내가 제안한대로 할 것입니다. 포인터를 가져 주셔서 감사합니다. – tzot