من Junior'a إلى Middle'a: المحلل اللغوي

مرحبا ، خابروفشان! لفترة طويلة كانت هناك رغبة في كتابة مقال ، لكن لم يجرؤ.
ستصف سلسلة منشوراتي طريقي من Junior إلى Middle ، ومن ثم ربما حتى إلى Senior. سنقوم البرنامج في بيثون.

سيتم إرفاق وثائق PS لبعض المكتبات غير المعروفة في النهاية.

باختصار عن نفسي: بدأت بيثون في الدراسة قبل عامين ، ولم تكن هناك تطورات خاصة.
أصبحت الأساسيات نفسها مخيبة للآمال ، حيث قمت بتدريسها لمدة عام ونصف. الآن أنا أدرس اللغة بعمق ، وأنا أفهم هيكلها وكيف يحدث كل شيء. في المقالات التالية ، سوف أقوم بتحميل الكود ، واستخدم جميع المكتبات الجديدة والجديدة ، وكما تعلم ، لدى python الكثير :)

من أين تبدأ؟ قبل شهرين كتبت أول محلل. اتضح أن كتابة المحللون بسيطة للغاية ويمكنك حتى كسب المال عليها. حتى الآن ، سأريك مثالين باستخدام المكدس من طلبات bs4 + . سوف نحلل حبيبنا الحبيب.

#      from bs4 import BeautifulSoup as bs import requests from fake_useragent import UserAgent 

لست متأكدًا مما إذا كان الجميع على دراية بمكتبة fake_useragent . إنه مناسب تمامًا للتحليل ؛ فهو يخلق وهمية وكيل المستخدم.

 ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} 

هذه هي المجموعة الصغيرة التالية من الكود. في السطر الأول ، أنشأنا متغير ua ، والذي يستخدم أساليب فئة UserAgent. في السطر الثاني ، أنشأنا قاموسًا سيساعدنا في التحليل اللغوي في المستقبل.

الآن قم بإنشاء الوظيفة نفسها للتحليل.

 def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") 

ستقوم هذه الوظيفة بتحليل الرابط ، الذي نشير إلى وجود علامة مع الفئة "post__title_link".

أسهل طريقة لحفظ البيانات هي حفظها في ملف. لذلك دعونا نفعل ذلك.

 url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n') 

في النهاية ، نحصل على ملف يحتوي على أسماء وروابط المشاركات التي جمعناها من الصفحة الأولى.

شفرة المصدر (كاملة) ، فقط دون تعليق:

 from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n') 

نتيجة جيدة! باستثناء تخطيات الخط والتعليقات ، التقينا 20 سطرًا بالضبط. بالنسبة للمبتدئين ، جيد جدا :)

كما وعدت ، روابط لوثائق المكتبات المستخدمة:

الطلبات: * الضغط *
bs4: * ضغط *
fake_useragent: * الضغط *

شكرا لكم جميعا على اهتمامكم! اراك قريبا!

ملاحظة: إذا كان هناك أي ملاحظات ، فلن تكون المقالة التالية طويلة في المستقبل

Source: https://habr.com/ru/post/ar482340/


All Articles