مرحبا ، خابروفشان! لفترة طويلة كانت هناك رغبة في كتابة مقال ، لكن لم يجرؤ.
ستصف سلسلة منشوراتي طريقي من Junior إلى Middle ، ومن ثم ربما حتى إلى Senior. سنقوم البرنامج في بيثون.
سيتم إرفاق وثائق PS لبعض المكتبات غير المعروفة في النهاية.
باختصار عن نفسي: بدأت بيثون في الدراسة قبل عامين ، ولم تكن هناك تطورات خاصة.
أصبحت الأساسيات نفسها مخيبة للآمال ، حيث قمت بتدريسها لمدة عام ونصف. الآن أنا أدرس اللغة بعمق ، وأنا أفهم هيكلها وكيف يحدث كل شيء. في المقالات التالية ، سوف أقوم بتحميل الكود ، واستخدم جميع المكتبات الجديدة والجديدة ، وكما تعلم ، لدى python الكثير :)
من أين تبدأ؟ قبل شهرين كتبت أول محلل. اتضح أن كتابة المحللون بسيطة للغاية ويمكنك حتى كسب المال عليها. حتى الآن ، سأريك مثالين باستخدام المكدس من
طلبات bs4 + . سوف نحلل حبيبنا الحبيب.
لست متأكدًا مما إذا كان الجميع على دراية بمكتبة
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:
* الضغط *شكرا لكم جميعا على اهتمامكم! اراك قريبا!
ملاحظة: إذا كان هناك أي ملاحظات ، فلن تكون المقالة التالية طويلة في المستقبل