خراش دادن داده ها از اینترنت با استفاده از پایتون جالب به نظر می رسد. اما برای یادگیری تسلط بر وب اسکرپینگ در پایتون به چه ابزارهایی نیاز دارید؟
چندین کتابخانه و چارچوب پایتون برای استخراج داده ها از وب وجود دارد. هر کسی با یک ابزار خاص شروع می کند تا زمانی که متوجه شود ممکن است برای پروژه بعدی آنها مناسب نباشد. اگرچه بسیار بعید است که از همه ابزارهای پایتون در یک پروژه استفاده کنید، اما باید بدانید که کدام یک را در جعبه ابزار خراش دادن وب خود نگه دارید.
در اینجا بهترین کتابخانهها، چارچوبها و سایر ابزارهای پایتون وجود دارد که به شما کمک میکند تا دادهها را بدون زحمت از وب پاک کنید.
1. سوپ زیبا
شروع لیست با بهترین کتابخانه خراش وب برای مبتدیان: سوپ زیبا. این اساسا ابزاری است که داده ها را از فایل های HTML و XML تجزیه شده با تبدیل سند به یک شی پایتون استخراج می کند.
“زیبایی” سوپ زیبا در سادگی آن نهفته است. راه اندازی آن آسان است و می توانید در عرض چند دقیقه با اولین پروژه خراش دادن وب خود شروع کنید. Beautiful Soup از یک رویکرد سلسله مراتبی برای استخراج داده ها از یک سند HTML استفاده می کند. می توانید عناصر را با استفاده از برچسب ها، کلاس ها، شناسه ها، نام ها و سایر ویژگی های HTML استخراج کنید.
با این حال، انتظار بیشتر از سوپ زیبا، خیلی دور از ذهن است. هیچ پشتیبانی داخلی برای میان افزارها و سایر قابلیت های پیشرفته مانند چرخش پروکسی یا چند رشته ای وجود ندارد. با Beautiful Soup، برای ارسال درخواستهای HTTP، تجزیه سند دانلود شده، و صادرات اطلاعات خراششده به فایل خروجی، به کتابخانههایی نیاز دارید.
2. درخواست ها
درخواست ها بدون شک پر استفاده ترین کتابخانه پایتون برای رسیدگی به درخواست های HTTP است. این ابزار با شعار خود مقابله می کند: HTTP for Humans™. از چندین نوع درخواست HTTP، از GET و POST تا PATCH و DELETE پشتیبانی می کند. نه تنها این، شما می توانید تقریباً تمام جنبه های یک درخواست، از جمله سرصفحه ها و پاسخ ها را کنترل کنید.
اگر این کار آسان به نظر می رسد، مطمئن باشید که درخواست ها با ویژگی های متعددی که دارد به کاربران پیشرفته نیز پاسخ می دهد. میتوانید با یک درخواست بازی کنید و سرصفحههای آن را سفارشی کنید، یک فایل را با استفاده از POST در سرور آپلود کنید، و از جمله موارد دیگر، زمانبندی، تغییر مسیرها و جلسات را مدیریت کنید.
درخواستها معمولاً با Beautiful Soup مرتبط هستند، زیرا دیگر چارچوبهای پایتون برای رسیدگی به درخواستهای HTTP پشتیبانی داخلی دارند. برای دریافت HTML برای یک صفحه وب، از درخواستها برای ارسال درخواست GET به سرور استفاده میکنید، سپس دادههای متنی را از پاسخ استخراج میکنید و آن را به Beautiful Soup ارسال میکنید.
3. خراشیده
همانطور که از نام آن پیداست، Scrapy یک چارچوب پایتون برای توسعه اسکراپرهای وب در مقیاس بزرگ است. این چاقوی ارتش سوئیس برای استخراج داده ها از وب است. Scrapy همه چیز را از ارسال درخواست ها و پیاده سازی پروکسی ها گرفته تا استخراج و صادرات داده ها را مدیریت می کند.
برخلاف سوپ زیبا، قدرت واقعی Scrapy مکانیسم پیچیده آن است. اما اجازه ندهید این پیچیدگی شما را بترساند. Scrapy از نظر سرعت، کارایی و ویژگیها، کارآمدترین چارچوب اسکراپی وب در این لیست است. دارای انتخابگرهایی است که به شما امکان می دهد داده ها را از یک سند HTML با استفاده از عناصر XPath یا CSS انتخاب کنید.
مزیت اضافه شده سرعت ارسال درخواست ها و استخراج داده ها توسط Scrapy است. درخواست ها را به صورت ناهمزمان ارسال و پردازش می کند، و این چیزی است که آن را از سایر ابزارهای خراش دادن وب متمایز می کند.
جدا از ویژگیهای اساسی، شما از میانافزارها نیز پشتیبانی میکنید، که چارچوبی از قلابها است که عملکردهای اضافی را به مکانیزم پیشفرض Scrapy تزریق میکند. شما نمیتوانید وبسایتهای مبتنی بر جاوا اسکریپت را با Scrapy حذف کنید، اما میتوانید از میانافزارهایی مانند scrapy-selenium، scrapy-splash و scrapy-scrapingbee برای پیادهسازی این قابلیت در پروژه خود استفاده کنید.
در نهایت، پس از اتمام استخراج داده ها، می توانید آن را در فرمت های مختلف فایل صادر کنید. CSV، JSON، و XML، به نام چند.
Scrapy یکی از دلایل متعددی است که چرا پایتون بهترین زبان برنامه نویسی برای هر کسی است که در وب اسکرپینگ است. راه اندازی اولین پروژه Scrapy ممکن است کمی طول بکشد، به خصوص اگر تجربه ای با کلاس ها و چارچوب های پایتون نداشته باشید. گردش کار Scrapy به چندین فایل و برای مبتدیان تفکیک شده است، که ممکن است به عنوان پیچیدگی ناخواسته ظاهر شود.
4. سلنیوم
اگر به دنبال حذف محتوای پویا و رندر شده با جاوا اسکریپت هستید، سلنیوم همان چیزی است که به آن نیاز دارید. سلنیوم به عنوان یک چارچوب تست وب بین پلتفرمی به شما کمک میکند HTML، CSS و جاوا اسکریپت را رندر کنید و آنچه را که لازم است استخراج کنید. شما همچنین می توانید تعاملات واقعی کاربر را با اعمال کدگذاری سخت صفحه کلید و ماوس تقلید کنید، که یک تغییر کامل بازی است.
سلنیوم یک نمونه مرورگر را با استفاده از درایور وب ایجاد می کند و صفحه را بارگذاری می کند. برخی از مرورگرهای محبوبی که توسط سلنیوم پشتیبانی می شوند عبارتند از: Google Chrome، Mozilla Firefox، Opera، Microsoft Edge، Apple Safari و Internet Explorer. از مکان یاب های CSS و XPath، مشابه انتخابگرهای Scrapy، برای یافتن و استخراج محتوا از عناصر HTML در صفحه استفاده می کند.
اگر با پایتون تجربه ندارید اما زبان های برنامه نویسی دیگر را می دانید، می توانید از سلنیوم با C#، JavaScript، PHP، Perl، Ruby و Java استفاده کنید.
تنها محدودیت این است که سلنیوم یک مرورگر وب را در پسزمینه راهاندازی میکند، منابع مورد نیاز برای اجرای اسکراپر در مقایسه با Scrapy یا Beautiful Soup به میزان قابل توجهی افزایش مییابد. اما با توجه به ویژگی های اضافی که سلنیوم به میز ارائه می کند، کاملاً موجه است.
5. urllib
کتابخانه urllib پایتون یک ابزار ساده و در عین حال ضروری است که میتوانید در زرادخانه اسکرپینگ وب خود داشته باشید. این به شما امکان می دهد URL ها را در اسکریپت های پایتون خود مدیریت و پردازش کنید.
یک کاربرد عملی مناسب urllib اصلاح URL است. در نظر بگیرید که یک وب سایت با چندین صفحه را می خراشید و باید بخشی از URL را تغییر دهید تا به صفحه بعدی برسید.
urllib می تواند به شما کمک کند URL را تجزیه کرده و آن را به چند قسمت تقسیم کنید، سپس می توانید آنها را تغییر داده و تجزیه کنید تا یک URL جدید ایجاد کنید. در حالی که استفاده از کتابخانه برای تجزیه رشته ها ممکن است زیاده روی به نظر برسد، urllib یک نجات دهنده برای افرادی است که برای سرگرمی وب اسکرپرها را کدنویسی می کنند و نمی خواهند وارد ساختارهای داده ای شوند.
همچنین، اگر میخواهید robots.txt یک وبسایت را بررسی کنید، که یک فایل متنی حاوی قوانین دسترسی برای خزنده Google و سایر اسکراپرها است، urllib نیز میتواند در این مورد به شما کمک کند. توصیه میشود robots.txt یک وبسایت را دنبال کنید و فقط صفحات مجاز را خراش دهید.
6. کتابخانه های JSON، CSV و XML
از آنجایی که Beautiful Soup یا Selenium ویژگیهای داخلی برای صادر کردن دادهها ندارند، برای صادر کردن دادهها به یک فایل JSON، CSV یا XML به کتابخانه Python نیاز دارید. خوشبختانه، مجموعهای از کتابخانهها وجود دارد که میتوانید برای رسیدن به این هدف انجام دهید، و ابتداییترین آنها توصیه میشود، یعنی json، csv، و xml به ترتیب برای فایلهای JSON، CSV و XML.
چنین کتابخانه هایی به شما این امکان را می دهند که یک فایل ایجاد کنید، داده ها را به آن اضافه کنید و در نهایت فایل را به حافظه محلی یا سرور راه دور صادر کنید.
7. سوپ مکانیکی
سوپ مکانیکی؟ آیا این یک سوپ زیبا ارزان قیمت است؟ خیر. MechanicalSoup با الهام از Mechanize و بر اساس درخواستهای پایتون و سوپ زیبا به شما کمک میکند رفتار انسان را خودکار کنید و دادهها را از یک صفحه وب استخراج کنید. می توانید آن را در نیمه راه بین سوپ زیبا و سلنیوم در نظر بگیرید. تنها شکار؟ جاوا اسکریپت را مدیریت نمی کند.
در حالی که نام ها مشابه هستند، نحو و گردش کار MechanicalSoup بسیار متفاوت است. شما یک جلسه مرورگر با استفاده از MechanicalSoup ایجاد میکنید و وقتی صفحه دانلود میشود، از روشهای Beautiful Soup مانند find() و find_all() برای استخراج دادهها از سند HTML استفاده میکنید.
یکی دیگر از ویژگی های چشمگیر MechanicalSoup این است که به شما امکان می دهد فرم ها را با استفاده از یک اسکریپت پر کنید. این به ویژه زمانی مفید است که شما نیاز دارید چیزی را در یک فیلد (به عنوان مثال یک نوار جستجو) وارد کنید تا به صفحه ای که می خواهید خراش دهید برسید. رسیدگی به درخواست MechanicalSoup فوقالعاده است، زیرا میتواند به طور خودکار تغییر مسیرها و پیوندها را در یک صفحه دنبال کند، و از تلاش شما برای کدنویسی دستی یک بخش برای انجام این کار صرفهجویی میکند.
از آنجایی که این کتاب بر اساس سوپ زیبا ساخته شده است، معایب هر دوی این کتابخانه ها همپوشانی قابل توجهی دارد. به عنوان مثال، هیچ روش داخلی برای مدیریت خروجی داده، چرخش پروکسی و رندر جاوا اسکریپت وجود ندارد. تنها مشکل Beautiful Soup که MechanicalSoup برطرف کرده است، پشتیبانی از رسیدگی به درخواستها است که با کدگذاری یک پوشش برای کتابخانه درخواستهای پایتون حل شده است.
اسکرپینگ وب در پایتون آسانتر شده است
پایتون یک زبان برنامه نویسی قدرتمند برای خراش دادن وب است، بدون شک، اما ابزارهای مورد استفاده تنها بخشی از مشکل هستند. مهمترین مسئله ای که افراد هنگام کدنویسی یک اسکراپر با آن مواجه می شوند، یادگیری سلسله مراتب اسناد HTML است.
درک ساختار یک صفحه وب و دانستن چگونگی مکان یابی سریع یک عنصر ضروری است اگر می خواهید وب اسکرپرهای پیشرفته ایجاد کنید.