كيفية استرداد صفحات سجل التحرير برمجياً من MusicBrainz باستخدام python؟
-
10-12-2019 - |
سؤال
أحاول استرداد صفحات سجل التحرير برمجيًا من موقع MusicBrainz.(musicbrainzngs
هي مكتبة لخدمة ويب MB، ولا يمكن الوصول إلى محفوظات التحرير من خدمة الويب).لهذا، أحتاج إلى تسجيل الدخول إلى موقع 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 واحصل عليه ببساطة البيانات تحرير نفسها وعدم شاشة كشط MusicBrainz.يمكنك أسفل تحميل سجل التحرير الكامل هنا:
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullessport