سلام و به دوره جدید من 'راهنمای کامل مبتدی تا پیشرفته برای خراش دادن وب با استفاده از Scrapy' خوش آمدید.
شما قبلاً می دانید که در این عصر فناوری اطلاعات، "داده" همه چیز است. و ما در همه جا داده های زیادی داریم. هر ثانیه چندین تن داده در حال تولید است. اما، درست مانند ضرب المثل "آب، آب در همه جا، نه قطره ای برای نوشیدن"، داده های جدولی ساختار یافته قابل استفاده در مقایسه با حجم وسیعی از داده های توزیع شده در سراسر اینترنت بسیار کمتر است. تجزیه و تحلیل داده های مدرن و یادگیری ماشینی به داده های ساختار یافته برای آموزش و ارزیابی مدل نیاز دارند.
اسکراپینگ وب روشی است که میتوانیم از آن برای به دست آوردن خودکار مقادیر زیادی داده از وبسایتها استفاده کنیم. بیشتر این داده های بدون ساختار در قالب صفحات یا جداول HTML هستند. برای استخراج و تبدیل این دادهها به شکل ساختاریافته مانند صفحهگسترده یا ذخیره در یک پایگاه داده میتوان از ابزار scraping وب استفاده کرد تا بتوان از آن در برنامههای مختلف استفاده کرد.
ابزارهای زیادی برای انجام اسکراپینگ وب وجود دارد. Scrapy یک چارچوب خزیدن وب رایگان و منبع باز است که به زبان Python نوشته شده است که توسط Zyte، یک شرکت توسعه و خدمات خراش دادن وب، توسعه و نگهداری می شود. Scrapy که در اصل برای اسکراپینگ وب طراحی شده بود، میتواند برای استخراج دادهها با استفاده از API یا به عنوان یک خزنده وب همه منظوره نیز استفاده شود.
در اینجا مروری بر جلساتی است که در این دوره آموزشی سریع اسکرپی گنجانده شده است.
در جلسه اول، مقدمه ای بر وب اسکرپینگ خواهیم داشت. خراش دادن وب چیست، چرا ما به اسکراپی وب نیاز داریم و همچنین یک مرور کلی در مورد کتابخانه اسکرپی. ما همچنین در مورد تفاوت بین خزنده، عنکبوت و اسکراپر صحبت خواهیم کرد.
در جلسه بعدی، کتابخانه scrapy را راه اندازی می کنیم. از نصب مفسر پایتون شروع می کنیم، سپس به نصب IDE pycharm برای کدنویسی و در نهایت کتابخانه scrapy ادامه می دهیم. سپس با استفاده از خط فرمان scrapy shell یک بررسی سریع را امتحان می کنیم تا ببینیم آیا همه چیز همانطور که در نظر گرفته شده کار می کند یا خیر. ما سعی خواهیم کرد وب سایت ebay را خراش دهیم و کل محتوای وب سایت، صفحه ای که به صورت محلی در یک مرورگر ذخیره می شود و همچنین کل html در خط فرمان را دریافت می کنیم.
سپس در جلسه بعدی، با انتخابگرهای scrapy شروع می کنیم. ما دو نوع انتخابگر خراشیده را مورد بحث قرار خواهیم داد. انتخابگرهای CSS و همچنین انتخابگرهای XPath. ما سعی خواهیم کرد با استفاده از روش get یک عنصر h4 را از وبسایت ebay حذف کنیم و همه دستههای محصول را با get all واکشی کنیم.
و سپس در جلسه آینده، به نمونه های بیشتری از انتخابگرهای css خواهیم پرداخت. ما از وب سایت های جعبه سندباکس Books and Quotes از zyte برای انجام تمرینات خود استفاده خواهیم کرد. با رفتن به درونیترین تگهای html، فهرستی از دستههای کتاب را دریافت میکنیم. ما نحو و ساختار استفاده از هر دو css و همچنین انتخابگرهای xpath را یاد خواهیم گرفت. پس از آن، نمونه هایی را با استفاده از انتخابگرهای xpath نیز امتحان خواهیم کرد.
در جلسه بعدی، همان عبارات حذف را در یک برنامه پایتون امتحان خواهیم کرد. ما یک پروژه pycharm جدید ایجاد می کنیم و کد scrapy را در فایل spider قرار می دهیم و بعداً فایل را اجرا می کنیم.
ما همچنین یک پروژه scrapy اختصاصی در pycharm ایجاد خواهیم کرد که همه فایلهای پشتیبانی به صورت خودکار ایجاد میشوند. سپس عنکبوت ایجاد می کنیم که می تواند تمام نقل قول ها را از وب سایت نقل قول ها خراش دهد. ما عبارات scrapy مختلفی را در خود خط فرمان امتحان میکنیم تا بتوانیم دادههای خاصی را از وبسایتی که با استفاده از xpath و همچنین انتخابگرهای css حذف کردهایم استخراج کنیم.
در spyder ما سعی میکنیم با استفاده از یک عبارت حلقهای، در هر یک از موارد نقل قول تکرار کنیم. بعداً پس از انجام تمام تنظیمات دقیق، این عبارت را در پروژه Scrapy spider خود قرار خواهیم داد. نتیجه خراشیده شده به طور ایمن در یک فایل json ذخیره خواهد شد.
ما اغلب با وبسایتهایی سروکار داریم که محتوا در چندین صفحه فهرست شده است. ما Spyder را در پروژه scrapy خود ایجاد خواهیم کرد که می تواند به طور خودکار از طریق پیوندهای هر صفحه بعدی حلقه بزند و سپس محتوا را درست مانند نحوه خراش دادن یک صفحه تکی خراش دهد. سپس داده ها در فایل json ذخیره می شوند.
به جای فایل json، گزینه scrapy features به طور مستقیم نتیجه حذف شده را در پایگاه داده sqlite به عنوان جداول و ردیف درج می کند. خواهیم دید که چگونه میتوانیم دادهها را در یک پایگاه داده sqlite با استفاده از ویژگی به نام pipelining ذخیره کنیم که در آن فرآیندی پس از دیگری و پس از دیگری و غیره انجام میشود. و دادههای داخل sqlite را برای تأیید بررسی میکنیم.
گاهی اوقات لازم است که به داخل پیوندهایی مانند "بیشتر بخوانید" یا "بیشتر بدانید" از موارد مقاله برویم و این باید خودکار شود تا هر پیوند خواندنی بیشتر بازدید و حذف شود. ما خواهیم دید که آیا پیوند وجود دارد یا خیر و اگر بله، یک تماس جداگانه برای رسیدگی به آن استفاده خواهد شد.
روند اخیر توسعه وب شامل صفحات پیمایش بینهایتی است که کاربر میتواند مانند یک پست رسانه اجتماعی به پیمایش وبسایت ادامه دهد. با رسیدن کاربر تقریباً به انتهای صفحه، مجموعه بعدی پست ها یا داده ها بارگیری می شود. خواهیم دید که چگونه میتوانیم دادهها را از این نوع صفحات پیمایشی بینهایت با استفاده از scrapy خراش دهیم. آنها بیشتر از یک API برای بارگیری پویا داده ها استفاده می کنند و خواهیم دید که چگونه می توانیم داده ها را از پیوند REST API واکشی کنیم، آن را تجزیه و بعداً ذخیره کنیم.
و صفحاتی هستند که محتوای واقعی html را از سرور ارائه نمی دهند. آنها فقط کد جاوا اسکریپت را به مرورگر می فرستند و مرورگر کد را اجرا می کند و بلافاصله صفحه html ایجاد می کند. اکثر برنامه های اسکراپ فقط جاوا اسکریپت را در اختیار دارند و نه html. اسکرپی هم همینطور. بنابراین برای تجزیه این محتویات html، باید از موتور جاوا اسکریپت برای شبیه سازی تولید محتوا استفاده کنیم و بعداً آن محتوای html را تجزیه خواهیم کرد. کمی مشکل است، اما ساده تر از آن چیزی است که فکر می کنید.
یک سناریوی اسکراپینگ پیشرفته مشابه زمانی است که ما نیاز به خودکارسازی فرم ارسالی یا ارسال درخواست پست به سرور داریم. به عنوان مثال، اگر وب سایتی فقط در صورت ورود به سیستم، صفحه ای با اطلاعات ارائه می دهد، scrapy می تواند ابتدا فرم را ارسال کند و پس از ارسال فرم، داده های کاربران وارد شده در دسترس خواهد بود و می توان آن را خراش داد.
هنگامی که ما راهاندازی عنکبوت را داریم و اگر طولانیتر باشد، بهترین راه این است که آن را به یک سرور منتقل کرده و به جای اجرا از رایانه شخصی خود اجرا کنید. خواهیم دید که چگونه میتوانیم یک سرور اسکرپی را راهاندازی کنیم تا بتوانید آن را با هر یک از ارائهدهندههای ابری مورد علاقه خود میزبانی کنید و یک سرور اسکرپی در ابر دارید.
و این همه در مورد موضوعاتی است که در حال حاضر در این دوره سریع گنجانده شده است. پروژه های نمونه و کد در یک پوشه آپلود و به اشتراک گذاشته شده است. لینک دانلود آنها را در آخرین جلسه یا قسمت منابع این دوره قرار خواهم داد. شما آزاد هستید که بدون هیچ سوالی از آن استفاده کنید.
همچنین، پس از تکمیل این دوره، گواهی پایان دوره به شما ارائه میشود که ارزش افزوده به مجموعه شما خواهد داشت.
بنابراین فعلاً همین است. به زودی شما را در کلاس درس خود می بینم.
یادگیری مبارک !!
استاد و برنامه نویس ارشد مهندسی کامپیوتر در دبی من یک پیشگام ، با استعداد و امنیت گرا Android/iOS Mobile و PHP/Python Web Developer Application Developer با بیش از هشت سال تجربه کلی فناوری اطلاعات که شامل طراحی ، پیاده سازی ، یکپارچه سازی ، آزمایش و حمایت از تأثیر است برنامه های کامل وب و تلفن همراه. من دارنده مدرک کارشناسی ارشد کارشناسی ارشد در رشته علوم کامپیوتر و مهندسی هستم. تجربه من با برنامه نویسی PHP/Python یک مزیت اضافی برای برنامه های سرویس گیرنده Android و iOS مبتنی بر سرور است. من در حال حاضر تمام وقت به عنوان یک معمار ارشد راه حل مشغول به کار هستم که پروژه های مشتری خود را از ابتدا تا انتها مدیریت می کنم تا از طراحی با کیفیت ، ابتکاری و کاربردی اطمینان حاصل کنم.
نمایش نظرات