English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

شرح مفصل لتثبيت وتشغيل إطار العمل Scrapy في Python

مقدمة: لقد سمعت عن اسم إطار عمل البرمجة Python لـ Spider. في الأيام القليلة الماضية، تعلمت إطار عمل Spider Scrapy، وسأشارك فهمي مع الجميع. إذا كان هناك أي خطأ في التعبير، أرجو من الكبار تصحيحه.

الجزء الأول: فهم Scrapy

Scrapy هو إطار عمل تطبيقي مكتوب للتنقل في بيانات المواقع وتخليص البيانات الهيكلية. يمكن تطبيقه في مجموعة من البرامج مثل استخراج البيانات، معالجة المعلومات أو تخزين البيانات التاريخية.

تم تصميمه أولاً لـإلتقاط الصفحة(بشكل أكثر دقة،الإلتقاط الشبكي) التي تم تصميمها، يمكن تطبيقها أيضًا للحصول على بيانات يتم إرجاعها من API (مثلخدمات Amazon Associates Web) أو الروبوتات الشبكية العامة.

هذا الملف سيعرض مفاهيم خلفية لـ Scrapy لتوضيح كيفية عمله، وسيحدد ما إذا كان Scrapy هو ما تحتاجه.

عندما تكون مستعدًا للبدء في مشروعك، يمكنك الرجوع إلىدليل البدء.

الجزء الثاني: شرح تثبيت Scrapy

منصة تشغيل إطار عمل Scrapy و الأدوات المساعدة

  1. Python2.7 (أحدث إصدار من Python هو 3.5، هنا تم اختيار إصدار 2.7)
  2. حزمة Python Package:pipandsetuptools. الآن يتطلب pip setuptools، وإذا لم يتم تثبيته، سيتم تثبيته تلقائيًا.
  3. lxml. معظم إصدارات Linux تأتي مع lxml. إذا كان مفقودًا، يرجى الرجوع إلىhttp://lxml.de/installation.html
  4. OpenSSL. تم توفيره في جميع الأنظمة باستثناء Windows (يرجى الرجوع إلى دليل تثبيت المنصة)。

يمكنك استخدام 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:

  1. project's configuration file.
  2. python module of this project. You will add code here later.
  3. project's item file.
  4. project's pipelines file.
  5. project's settings file.
  6. directory where spider code is placed.

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 (أثناء إرسال البريد الإلكتروني، يرجى استبدال '#' بـ '@') لإبلاغنا، وقدم الأدلة ذات الصلة، وسنقوم بإزالة المحتوى المزعوم عن حقوق النسخ فورًا.

مفضلة