English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مقدمة: لقد سمعت عن اسم إطار عمل البرمجة Python لـ Spider. في الأيام القليلة الماضية، تعلمت إطار عمل Spider Scrapy، وسأشارك فهمي مع الجميع. إذا كان هناك أي خطأ في التعبير، أرجو من الكبار تصحيحه.
الجزء الأول: فهم Scrapy
Scrapy هو إطار عمل تطبيقي مكتوب للتنقل في بيانات المواقع وتخليص البيانات الهيكلية. يمكن تطبيقه في مجموعة من البرامج مثل استخراج البيانات، معالجة المعلومات أو تخزين البيانات التاريخية.
تم تصميمه أولاً لـإلتقاط الصفحة(بشكل أكثر دقة،الإلتقاط الشبكي) التي تم تصميمها، يمكن تطبيقها أيضًا للحصول على بيانات يتم إرجاعها من API (مثلخدمات Amazon Associates Web) أو الروبوتات الشبكية العامة.
هذا الملف سيعرض مفاهيم خلفية لـ Scrapy لتوضيح كيفية عمله، وسيحدد ما إذا كان Scrapy هو ما تحتاجه.
عندما تكون مستعدًا للبدء في مشروعك، يمكنك الرجوع إلىدليل البدء.
الجزء الثاني: شرح تثبيت Scrapy
منصة تشغيل إطار عمل Scrapy و الأدوات المساعدة
يمكنك استخدام pip لتثبيت Scrapy (يُنصح باستخدام pip لتثبيت حزمة Python).
pip install Scrapy
مسار التثبيت في Windows:
1、بعد تثبيت Python 2.7، يجب عليك تعديل متغير بيئة PATH، وإضافة برنامج Python والسكربت الإضافية إلى مسار النظام. أضف المسار التالي إلى PATH:
C:\Python27\;C:\Python27\Scripts\;
بالإضافة إلى ذلك، يمكنك استخدام أوامر cmd لتعيين Path:
c:\python27\python.exe c:\python27\tools\scripts\win_add2path.py
After the installation and configuration are complete, you can execute the command python --version to check the installed python version. (As shown in the figure)
2, Fromhttp://sourceforge.net/projects/pywin32/Installpywin32
Please confirm that the downloaded version is compatible with your system (win32 or amd64)
Fromhttps://pip.pypa.io/en/latest/installing.htmlInstall pip
3, Open the command line window to confirm that pip is installed correctly:
pip --version
4, So far, Python 2.7 and pip have been running correctly. Next, install Scrapy:
pip install Scrapy
So far, the installation of Scrapy in Windows has been completed.
Third, Scrapy beginners tutorial
1, Create a Scrapy project in cmd.
scrapy startproject tutorial
H:\python\scrapyDemo>scrapy startproject tutorial New Scrapy project 'tutorial', using template directory 'f:\\python27\\lib\\site-packages\\scrapy\\templates\\project', created in: H:\python\scrapyDemo\tutorial You can start your first spider with: cd tutorial scrapy genspider example example.com
2, The file directory structure is as follows:
.
Analyze the structure of the Scrapy framework:
3、كتابة سبيدر بسيط
1、في ملف item.py قم بضبط نماذج الحقول التي تريد جمعها من الصفحات.
# -*- coding: utf-8 -*- # تعريف نماذج الأسماء الم جمعت # # راجع الوثائق في: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy from scrapy.item import Item, Field class TutorialItem(Item): title = Field() author = Field() releasedate = Field()
2、في ملف spider.py الموجود في مجلد tutorial/spiders، اكتب موقع الويب الذي تريد جمعه واكتب جمع كل حقل.
# -*-coding:utf-8-*- import sys from scrapy.linkextractors.sgml import SgmlLinkExtractor from scrapy.spiders import CrawlSpider, Rule from tutorial.items import TutorialItem reload(sys) sys.setdefaultencoding("utf-8") class ListSpider(CrawlSpider): # اسم السبيدر name = "tutorial" # ضبط تأخير التحميل download_delay = 1 # أسماء المجالات المسموح بها allowed_domains = ["news.cnblogs.com"] # URLs البداية start_urls = [ "https://news.cnblogs.com" ] # قواعد استخراج الروابط, بدون callback يعني استنساخ هذا النوع من urls rules = ( Rule(SgmlLinkExtractor(allow=(r'https://news.cnblogs.com/n/page/\d',))), Rule(SgmlLinkExtractor(allow=(r'https://news.cnblogs.com/n/\d+',)), callback='parse_content'), )}} # دالة تحليل المحتوى def parse_content(self, response): item = TutorialItem() # URL الحالية title = response.selector.xpath('//div[@id="news_title"]')[0].extract().decode('utf-8') item['title'] = title author = response.selector.xpath('//div[@id="news_info"]/span/a/text()')[0].extract().decode('utf-8') item['author'] = author releasedate = response.selector.xpath('//div[@id="news_info"]/span[@class="time"]/text()')[0].extract().decode( 'utf-8') item['releasedate'] = releasedate yield item
3、احفظ البيانات في tutorial/pipelines.py في خطوط المراقبة.
# -*- coding: utf-8 -*- # تعريف خطتك هنا # # لا تنسى إضافة خطتك إلى إعداد ITEM_PIPELINES # راجع إلى: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import json import codecs class TutorialPipeline(object): def __init__(self): self.file = codecs.open('data.json', mode='wb', encoding='utf-8')# بيانات التخزين في data.json def process_item(self, item, spider): السطر = json.dumps(dict(item)) + "\n" self.file.write(line.decode("unicode_escape")) return item
4- تكوين بيئة التنفيذ في tutorial/settings.py.
# -*- coding: utf-8 -*- BOT_NAME = 'tutorial' SPIDER_MODULES = ['tutorial.spiders'] NEWSPIDER_MODULE = 'tutorial.spiders' # تعطيل الكوكي، لتجنب الإيقاف COOKIES_ENABLED = False COOKIES_ENABLES = False # إعداد Pipeline، هنا يتم تنفيذ كتابة البيانات إلى ملف ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 300 } # إعداد عمق الحشرة القصوى DEPTH_LIMIT = 100
5- إنشاء ملف main لتنفيذ رمز الحشرة.
from scrapy import cmdline cmdline.execute("scrapy crawl tutorial".split())
في النهاية، بعد تنفيذ main.py، يمكنك الحصول على بيانات JSON للنتائج الجمعية في ملف data.json.
هذا هو نهاية محتوى هذا المقال، نأمل أن يكون قد ساعد في تعلمكم، ونأمل أيضًا أن تشجعوا دائمًا تعليمات النفخ.
البيان: محتوى هذا المقال تم جمعه من الإنترنت، وله حقوق الطبع والنشر لأصحاب الملكية، تم جمعه من قبل المستخدمين عبر الإنترنت وتم تحميله بشكل تلقائي، هذا الموقع لا يمتلك حقوق الملكية، ولم يتم تعديل المحتوى بشكل إنساني، ولا يتحمل أي مسؤولية قانونية مرتبطة بذلك. إذا اكتشفت محتوى مخالف لحقوق النسخ، فأرجو إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (أثناء إرسال البريد الإلكتروني، يرجى استبدال '#' بـ '@') لإبلاغنا، وقدم الأدلة ذات الصلة، وسنقوم بإزالة المحتوى المزعوم عن حقوق النسخ فورًا.