إرشادات لكشط كلمات الأغاني باستخدام Python من Genius
نشرت: 2019-08-08ما هو Rap Genius؟
ما بدأ في البداية باسم Rap-Genius في عام 2009 تطور الآن إلى شركة وسائط فريدة لتبادل المعرفة بالموسيقى تسمى Genius ، والتي تخدم أكثر من مائة مليون شخص كل شهر . في هذه المدونة ، سنتعلم كيفية كشط كلمات الأغاني على الويب باستخدام Python ، في دليل تفصيلي خطوة بخطوة.
يجب أن يكون معظم مستخدمي الإنترنت المهتمين بالموسيقى على دراية بـ Genius. إنه موقع ويبسي سريع النمو يشارك ما وراء الأغنية - ما كانت أفكار الفنان عندما كان يكتبها ، وغير ذلك الكثير . حتى الفنانين المشهورين مثل أريانا غراندي وكيندريك لامار يتعاونون مع Genius ، لمنح العالم نظرة أعمق عن فنهم.
إذا أراد أي شخص الزحف إلى كلمات الأغاني ، بغض النظر عن الغرض منها ، فإن Genius هو موقع الويب الذي يجب الانتقال إليه. قاعدة بياناتهم التي تضم أكثر من خمسة وعشرين مليون أغنية وألبوم وفنانين بالإضافة إلى التعليقات التوضيحية تجعلهم أكبر قاعدة بيانات لكلمات الأغاني في أي مكان في العالم .
لماذا قد يرغب المرء في الزحف إلى البيانات من Genius؟
تطورت Genius إلى مجتمع موسيقي ، حيث يجتمع المساهمون والموسيقيون وحتى المحررين معًا لتفكيك الأغاني. لهذا السبب ، أصبحت أكبر مكتبة لكلمات الأغاني في العالم. دخلت Genius أيضًا في شراكة مع شركات بث الموسيقى لزيادة قاعدة مستخدميها.
Genius هو المكان المناسب لكشف الويب والزحف إلى كلمات الأغاني وغيرها من البيانات المتعلقة بصناعة الموسيقى منه. نظرًا لأنه لن يمنحك مستودعًا واسعًا للكلمات فحسب ، بل سيكون لديك أيضًا إمكانية الوصول إلى تعليقات المستخدمين ، ومشاعر المستخدم. تخيل ، يمكنك توقع النوع الذي حقق نجاحًا حاليًا بين المستخدمين الجدد استنادًا إلى البيانات المستخرجة من Genius !.
كيف تتخلص من كلمات الأغاني على الويب من Genius باستخدام Python؟
عندما يتعلق الأمر بكشط الويب ، فإن القليل من اللغات تدعم أنواعًا مختلفة من مشاريع تجريف الويب. من بين كل ذلك ، تعد Python هي الأسهل في التعلم وهي مفيدة أيضًا لأنواع مختلفة من المشاريع. إلى جانب Python ، ستحتاج أيضًا إلى بعض حزم Python التابعة لجهات خارجية بالإضافة إلى محرر نصوص. يمكنك اتباع التعليمات الواردة في هذه الصفحة نظرًا لأن الإعداد هو نفسه ، بغض النظر عن موقع الويب الذي تقوم بكشطه. بمجرد الانتهاء من إعداد النظام الخاص بك ، فأنت على استعداد للبدء.
أين المدونة؟
لذلك ناقشنا الكثير حول كلمات الأغاني ، Genius ، والإعداد الأساسي. دعنا نحصل على لمحة عن الكود الخاص بكشط كلمات الأغاني باستخدام Python قبل أن أوضح لك كيفية تشغيلها وكيف يعمل الكود.
[لغة الكود = "بيثون"]
#! / usr / bin / python
# - * - الترميز: utf - 8 - * -
طلب استيراد urllib
استيراد urllib.parse
استيراد خطأ urllib
من bs4 استيراد BeautifulSoup
استيراد ssl
استيراد json
استيراد ast
استيراد نظام التشغيل
من طلب استيراد urllib.request ، urlopen
# لتجاهل أخطاء شهادة SSL
ctx = ssl.create_default_context ()
ctx.check_hostname = خطأ
ctx.verify_mode = ssl.CERT_NONE
# مدخلات من المستخدم
url = input ('Enter Genius song song Url-')
# جعل الموقع يعتقد أنك تصل إليه باستخدام متصفح الموزيلا
req = الطلب (url ، headers = {'User-Agent': 'Mozilla / 5.0'})
صفحة الويب = urlopen (req) .read ()
# إنشاء كائن BeautifulSoup من صفحة html لسهولة استخراج البيانات.
soup = BeautifulSoup (صفحة الويب ، "html.parser")
html = soup.prettify ('utf-8')
song_json = {}
song_json [“Lyrics”] = []؛
song_json ["التعليقات"] = [] ؛
# استخراج عنوان الأغنية
للحصول على العنوان في soup.findAll ("العنوان"):
song_json [“Title”] = title.text.strip ()
# استخراج تاريخ إصدار الأغنية
للامتداد في soup.findAll ('span'، attrs = {'class': 'metadata_unit-info metadata_unit-info – text_only'}):
song_json [“تاريخ الإصدار”] = span.text.strip ()
# استخراج التعليقات على الاغنية
لـ div in soup.findAll ('div'، attrs = {'class': 'rich_text_formatting'}):
التعليقات = div.text.strip (). split ("n")
للتعليق في التعليقات:
إذا كان التعليق! = ””:
song_json ["التعليقات"]. إلحاق (تعليق) ؛
# استخرج كلمات الأغنية
لـ div in soup.findAll ('div'، attrs = {'class': 'lyrics'}):
song_json ["الأغاني"]. append (div.text.strip (). split ("n")) ؛
#Save json الذي تم إنشاؤه باسم الملف باسم title + .json
مع open (song_json [“Title”] + '.json'، 'w') كملف outfile:
json.dump (song_json ، outfile ، مسافة بادئة = 4 ، insurance_ascii = False)

# احفظ محتوى html في ملف html بالاسم بالعنوان + .html
مع فتح (song_json [“Title”] + '.html'، 'wb') كملف:
file.write (html)
طباعة ('———- اكتمل استخراج البيانات. تحقق من ملف json .———-')
[/الشفرة]
لتشغيل الكود المذكور أعلاه ، كل ما عليك فعله هو حفظه في ملف بامتداد .py. لذلك يمكنك حفظه في ملف باسم songLyricsExtractor.py على سبيل المثال ، ثم من المحطة قم بتشغيل الأمر:
[لغة الكود = "بيثون"]
بيثون songLyricsExtractor.py
[/الشفرة]
عند تشغيله ، سيُطلب منك إدخال عنوان URL. يمكن أن يكون هذا رابطًا لأي أغنية في موقع Genius على الويب. يمكنك استخدام هذا الرابط لـ Lana Del Rey's Looking for America. لقد ألغينا كلمات هذه الأغنية من Genius ، لنوضح لك كيفية عمل الكود ، وسيتم تناول ذلك لاحقًا في المدونة.
شرح الكود
قبل أن نبدأ في تشغيل الكود وفهم ما تقدمه لك ، دعنا نحاول فهم الكود نفسه. كما هو الحال دائمًا ، نحن نستخدم BS4 (أو حساء جميل) ، وهي مكتبة تقوم بالتحليل من خلال صفحة n HTML.
في البداية ، نحصل على صفحة الويب ونحولها إلى كائن حساء جميل حيث يمكننا التقاط divs و spans والعناوين وعلامات أخرى ، بسمات محددة. نستخدم هذه الأساليب للزحف إلى كلمات الأغاني ، والتعليقات ، وعنوان صفحة الويب ، وكذلك اليوم الذي تم فيه إصدار الأغنية بالفعل. بمجرد أن نقوم بكشط هذه البيانات ، نقوم بحفظها في ملف JSON ، مع اسم - عنوان الصفحة + امتداد .json. نقوم أيضًا بحفظ ملف HTML بعنوان اسم الصفحة + امتداد html. يتم ذلك بحيث يمكن تحليل صفحة HTML ويمكن العثور على المزيد من نقاط البيانات في المستقبل.
مثال على المدونة في العمل
عند تشغيل الكود وإعطائه رابط أغنية على Genius ، ستحصل على JSON الذي سيبدو مشابهًا للأغنية الواردة أدناه. واحد أدناه هو JSON الذي نحصل عليه من أجل البحث عن أمريكا بواسطة Lana Del Rey. لقد قدمنا JSON واحدًا فقط نظرًا لأن حجمهما كبير جدًا ، ولكن يمكنك تشغيله مع أغانيك المفضلة أيضًا.
[لغة الكود = "بيثون"]
{
"كلمات الاغنية": [
[
"[الآية 1]"،
"قمت برحلة إلى سان فرانسيسكو" ،
"قال جميع أصدقائنا أننا سنغفل" ،
"لم أعمل ، لذلك غادرت إلى فريسنو" ،
"لقد كانت رحلة ذات مناظر خلابة" ،
"توقف لمشاهدة الأطفال في الحديقة" ،
"اعتدنا أن نقلق عليهم فقط بعد حلول الظلام" ،
"" ،
"[جوقة]"،
"ما زلت أبحث عن نسختي الخاصة من أمريكا" ،
"واحد بدون مسدس ، حيث يمكن للعلم أن يطير بحرية" ،
"لا قنابل في السماء ، فقط ألعاب نارية عندما تصطدم أنت وأنا" ،
"إنه مجرد حلم رأيته في ذهني" ،
"إنه مجرد حلم رأيته في ذهني" ،
"إنه مجرد حلم رأيته في ذهني" ،
"" ،
"[الآية 2]" ،
"عدت إلى مدينة نيويورك" ،
"فات خط نهر هدسون" ،
"استقل القطار إلى بحيرة بلاسيد" ،
"هذا مكان وزمان آخر ، حيث" ،
"اعتدت الذهاب إلى أماكن القيادة والاستماع إلى موسيقى البلوز" ،
"الكثير من الأشياء التي أفكر فيها مرتين قبل أن أفعل ، لا" ،
"" ،
"[جوقة]"،
"ما زلت أبحث عن نسختي الخاصة من أمريكا" ،
"واحد بدون مسدس ، حيث يمكن للعلم أن يطير بحرية" ،
"لا قنابل في السماء ، فقط ألعاب نارية عندما تصطدم أنت وأنا" ،
"إنه مجرد حلم رأيته في ذهني" ،
"إنه مجرد حلم رأيته في ذهني" ،
"إنه مجرد حلم رأيته في ذهني" ،
"إنه مجرد حلم رأيته في ذهني"
]
] ،
"تعليقات": [
[
"البحث عن أمريكا" هي أغنية كتبتها لانا في الخامس من أغسطس 2019 بخصوص عمليات إطلاق النار الجماعية في جميع أنحاء الولايات المتحدة ، بمجرد عودتها إلى لوس أنجلوس. تعتمد رسالة الأغنية على حلم لانا بوضع أفضل للشعب الأمريكي ، وهو موضوع كانت غنت من قبل في مسارات مثل "Coachella - Woodstock in My Mind" و "عندما كان العالم في حالة حرب ، حافظنا على الرقص". أصدرت Del Rey الأغنية عبر منصات البث في 9 أغسطس 2019 كأغنية واحدة "،
"قد يكون عنوان الأغنية إشارة إلى" America "بقلم Simon & Garfunkel:" ،
"لقد جاؤوا جميعًا للبحث عن أمريكا" ،
"Del Rey أخذتها على Instagram لمشاركة مقطع فيديو لها وهي تغني في الاستوديو مع صديقها والمنتج جاك أنتونوف."
] ،
[
"شارك Del Rey الأغنية عبر Instagram مضيفًا:" ،
"مرحبًا يا رفاق عادوا مبكرًا من مونتيسيتو مع أخي هذا الصباح وطلبوا من جاك أنتونوف المجيء إلى المدينة لأن لدي أغنية في ذهني أردت كتابتها. الآن أعلم أنني لست سياسيًا ولا أحاول أن أكون معذرةً جدًا لأن لدي رأيًا - ولكن في ضوء جميع عمليات إطلاق النار الجماعية وإطلاق النار من متتالي في اليومين الماضيين والتي أثرت علي حقًا على المستوى الخلوي ، أردت فقط نشر هذا الفيديو الذي التقطته مهندستنا لورا قبل 20 دقيقة. آمل أن تعجبك. أنا أغني الحب للجوقات التي سجلتها هذا الصباح. سأطلق عليه اسم "البحث عن أمريكا" ".
]
] ،
“Title”: “Lana Del Rey - Looking For America Lyrics | كلمات عبقرية "،
"تاريخ الإصدار": "9 آب (أغسطس) 2019"
}
[/الشفرة]
ما مدى قابلية هذا الحل للتوسع؟
بينما الحل الذي قدمناه لأغنية واحدة ، يمكنك إنشاء قائمة بروابط صفحات كلمات الأغاني على Genius ثم تشغيل الكود في القائمة بشكل تكراري لكتابة كلمات الأغاني على الويب باستخدام Python . يمكنك أيضًا العثور على تطابق regex لصفحات Genius التي تحتوي على كلمات الأغاني ، ثم الزحف إلى صفحات متعددة من Genius دفعة واحدة ، بحيث يتعرف الرمز نفسه على الصفحات التي تحتوي على كلمات الأغاني.
ومع ذلك ، فإن هذه الأنواع من حلول DIY مفيدة للهواة الصديق أو الشخص الذي يحتاج لمرة واحدة. في حال كانت متطلباتك تجارية أكثر ولديك مشكلة تجريف على الويب حيث تحتاج إلى ميزات مثل:
- تسليم البيانات بتنسيقات محددة
- تحديث البيانات بتردد منتظم
- لا توجد تكاليف صيانة والبنية التحتية
ثم يجب عليك الذهاب مع مزود خدمة تجريف الويب مثل PromptCloud. يفخر فريقنا في PromptCloud بتقديم حلول تجريف الويب على مستوى المؤسسات لفرق العمل في جميع أنحاء العالم ، لتمكينهم من استخدام البيانات في سير عمل أعمالهم ، واتخاذ قرارات تعتمد على البيانات.
