آموزش Scraping وب در Nodejs و JavaScript

Web Scraping in Nodejs & JavaScript

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: آموزش خراش دادن وب در Nodejs و JavaScript با پروژه های نمونه با وب سایت های واقعی! Craiglist، iMDB، AirBnB و موارد دیگر! قادر به خراش دادن کارها از یک صفحه در Craigslist باشید نحوه استفاده از Request را بیاموزید نحوه استفاده از NightmareJS یاد بگیرید چگونه از Puppeteer استفاده کنید یاد بگیرید چگونه عناصر را بدون کلاس یا شناسه شناسایی کنید یاد بگیرید چگونه داده های خراش را در CSV ذخیره کنید یاد بگیرید چگونه داده های خراش را ذخیره کنید. به MongoDb یاد بگیرید چگونه فیس بوک را فقط با استفاده از درخواست خراش دهید! بیاموزید که چگونه می توانید سایت ها را مهندسی معکوس کنید و API های مخفی را پیدا کنید! فن آوری های مختلف مورد استفاده برای خراش دادن و بهترین زمان استفاده از آنها را بیاموزید آموزش خراش دادن سایت ها با استفاده از احراز هویت آموزش خراش دادن جداول HTML با استفاده از Request/Cheerio پیش نیازها:Basic HTML Basic jQuery Basic Nodejs

در این دوره آموزشی با مثال‌های عملی در وب‌سایت‌های واقعی با استفاده از JavaScript Nodejs Request، Cheerio، NightmareJs و Puppeteer، چگونه یک وب‌سایت را خراش دهید. شما از جدیدترین نحو جاوا اسکریپت ES7 با async/await استفاده خواهید کرد.

با استفاده از Nodejs Request و Cheerio یاد خواهید گرفت که چگونه یک وب سایت Craigslist را برای مشاغل مهندسی نرم افزار خراش دهید. شما از جدیدترین نحو جاوا اسکریپت ES7 با async/await استفاده خواهید کرد.

سپس یاد خواهید گرفت که چگونه وب سایت های پیشرفته تری را که به جاوا اسکریپت نیاز دارند مانند iMDB و AirBnB با استفاده از NighmareJs و Puppeteer خراش دهید.


می‌خواهم با یک وب‌سایت واقعی عملی به شما نشان دهم که چگونه می‌توانید در وهله اول با مهندسی معکوس وب‌سایت‌ها و پیدا کردن APIهای پنهان آنها، از اتلاف وقت برای ایجاد یک وب‌اسکریپر جلوگیری کنید!


با ساختن اسکراپر به روش آزمایشی با html مسخره‌شده، به جای ضربه زدن به وب‌سایت هر بار که در حال اشکال‌زدایی و توسعه آن هستید، چگونه از مسدود شدن وب‌سایت‌ها در هنگام توسعه اسکراپر خود جلوگیری کنید. همچنین خواهید آموخت که در صورت مسدود شدن چه کاری می توانید انجام دهید و بدون توجه به گزینه های جایگزین برای راه اندازی اسکراپر خود و راه اندازی آن!


همچنین یاد خواهید گرفت که چگونه روی سروری با اتصال بد، یا حتی اگر اتصال بدی دارید، خراش دهید.

حتی یاد خواهید گرفت که چگونه نتایج خود را در یک فایل CSV و MongoDB ذخیره کنید!


چگونه می‌توانید اسکراپری بسازید که هر 1 ساعت (یا بازه‌های زمانی دیگر) خراشیده شود و آن را برای میزبانی ابری مانند Heroku یا Google Cloud مستقر کنید؟ اجازه دهید سریع و آسان به شما نشان دهم!


چگونه سایتی را که به گذرواژه نیاز دارد خراش می دهید؟ من قصد دارم آن را نیز با یک وب سایت واقعی (Craigslist) به شما نشان دهم!


چگونه نتایج scraping خود را در REST API با Nodejs Express ارائه می‌دهید؟ و چگونه می توانیم یک React frontend بسازیم که نتایج را نشان می دهد؟ این را نیز به سریع ترین و ساده ترین راه ممکن یاد خواهید گرفت!


به‌علاوه، بخشی از نحوه ایجاد یک GraphQL API پایه در این دوره گنجانده شده است.

به عنوان آخرین گیلاس در بالا، من بخشی حاوی یک درپشتی مخفی دارم که به شما نشان می دهد چگونه فیس بوک را فقط با استفاده از درخواست خراش دهید!


اگر مشکلی در رابطه با سایتی دارید که می‌خواهید خودتان آن را خراش دهید، کاملاً اشکالی ندارد که برای کمک با من تماس بگیرید. خوشحال می شوم شما را در مسیر درست راهنمایی کنم! با هر مشکلی که دانش‌آموزانم با آن روبرو هستند، من از آن برای گسترش دوره خود استفاده می‌کنم!


سرفصل ها و درس ها

نرم افزار مورد نیاز Required Software

نرم افزار مورد نیاز Required Software

  • نرم افزار برای خراش دادن وب در جاوا اسکریپت Software to web scrape in JavaScript

  • (اختیاری) نکته در مورد منسوخ شدن درخواست/درخواست - قول (optional) Note about deprecation of Request/Request-Promise

چیزی که همیشه باید قبل از نوشتن یک وب اسکریپر بررسی کنید! What you should ALWAYS check before even writing a web scraper!

چیزی که همیشه باید قبل از نوشتن یک وب اسکریپر بررسی کنید! What you should ALWAYS check before even writing a web scraper!

  • این می تواند شما را در زمان و تلاش زیادی صرفه جویی کند! This could save you A LOT of time and effort!

مقدمه ای بر انتخابگرهای CSS و ابزارهایی که برای خراش دادن استفاده می کنیم Intro to CSS selectors and tools we use for scraping

مقدمه ای بر انتخابگرهای CSS و ابزارهایی که برای خراش دادن استفاده می کنیم Intro to CSS selectors and tools we use for scraping

  • مقدمه بخش Intro to section

  • استفاده از ابزارهای توسعه دهنده کروم Using Chrome Developer Tools

  • انتخاب عنصر ما Selecting our element

  • ساختن اولین اسکراپر ما! Building our first scraper!

  • انتخاب عناصر متعدد Selecting multiple elements

  • انتخاب با استفاده از شناسه CSS Selecting using CSS ID

  • انتخاب با استفاده از کلاس های CSS Selecting using CSS classes

  • انتخاب با استفاده از ویژگی های HTML Selecting using HTML attributes

  • شما در راه تبدیل شدن به یک نینجا خراشنده هستید! You're on your way to become a scraping ninja!

خراش دادن جداول HTML با Request/Cheerio Scraping HTML tables with Request/Cheerio

خراش دادن جداول HTML با Request/Cheerio Scraping HTML tables with Request/Cheerio

  • مقدمه بخش Intro to section

  • ساختار جدول HTML Structure of a HTML table

  • ساختار داده در جاوا اسکریپت Data Structure in JavaScript

  • ایجاد انتخابگر در کروم تولز Creating selector in Chrome Tools

  • خراش دادن تمام سلول های جدول در ابزار کروم Scraping all table cells in Chrome Tools

  • خراش دادن داده ها در Nodejs با Cheerio/Request Scraping data in Nodejs with Cheerio/Request

  • اسامی شرکت های اسکرپینگ در Nodejs Scraping Company Names in Nodejs

  • خراش دادن تمام ستون های جدول Scraping all table columns

  • جایزه - سرصفحه های جدول پویا هنگام تراشیدن جداول BONUS - dynamic table headers when scraping tables

خراش دادن کارهای نرم افزاری در Craigslist با استفاده از Puppeteer Scraping software jobs on Craigslist using Puppeteer

خراش دادن کارهای نرم افزاری در Craigslist با استفاده از Puppeteer Scraping software jobs on Craigslist using Puppeteer

  • مقدمه پروژه Intro to project

  • چرا به جای Nodejs Request از Puppeteer استفاده می کنیم؟ Why are we using Puppeteer instead of Nodejs Request?

  • شروع پروژه Initialising project

  • باز کردن URL با Puppeteer Opening a URL with Puppeteer

  • چه داده هایی را می خراشیم؟ What data are we scraping?

  • ساختار داده ها Data Structure

  • انتخاب عنوان شغلی Css Job Title Css Selector

  • خراش دادن عنوان شغلی با استفاده از Cheerio Scraping job title using Cheerio

  • خراش دادن URL توضیحات Scraping description url

  • ایجاد آرایه ای از اشیاء خراش دهنده Creating array of scraping objects

  • خراش دادن تاریخ ارسال کار Scraping job post date

  • خراش دادن داده های محله Scraping Neighborhood data

  • خراش دادن فهرست صفحات با Puppeteer Scraping List of Pages with Puppeteer

  • محدود کردن درخواست‌های خراشیدن در ثانیه Limiting Scraping Requests per Second

  • خراش دادن شرح شغل از صفحات مختلف Scraping job descriptions from different pages

  • حذف غرامت از لیست مشاغل Scraping compensation from job listings

  • mLab اکنون MongoDB Atlas است mLab is now MongoDB Atlas

  • راه اندازی پایگاه داده MongoDB با Mlab Setting up MongoDB database with MLab

  • اتصال به پایگاه داده MongoDB با Mongoose Connecting to MongoDB database with Mongoose

  • ایجاد طرحواره فهرست مانگوس Creating Listing mongoose schema

  • ذخیره داده های فهرست در MongoDB Saving listing data to MongoDB

Web Scraping Craigslist Jobs با استفاده از Nodejs Request Web Scraping Craigslist Jobs using Nodejs Request

Web Scraping Craigslist Jobs با استفاده از Nodejs Request Web Scraping Craigslist Jobs using Nodejs Request

  • معرفی Introduction

  • راه اندازی پروژه Project Setup

  • دریافت Html از وب سایت Getting Html from website

  • ایجاد نمونه ای از داده ها برای جمع آوری Creating sample of data to collect

  • عنوان/URL از Jobs Title/URL From Jobs

  • زمان خراش دادن کار ارسال شد Scraping Time Job Was Posted

  • محله شغل Job Neighborhood

  • شرح وظایف خراش دادن Scraping Job Descriptions

  • پایان شرح و جبران Finish Description and Compensation

  • خروجی Outtro

در صورت مسدود شدن چه باید کرد؟ What to do if you're blocked?

در صورت مسدود شدن چه باید کرد؟ What to do if you're blocked?

  • کمک! من مسدود هستم! Help! I'm blocked!

  • اگر بلاک شده اید چه کاری می توانید انجام دهید؟ What can you do if you're blocked?

  • Scraping API Scraping API's

  • استفاده از پروکسی در Request Using a proxy in Request

ساخت یک اسکراپر وب به روش TDD Building a web scraper the TDD way

ساخت یک اسکراپر وب به روش TDD Building a web scraper the TDD way

  • راه اندازی پروژه و اضافه کردن بسته ها Initializing project and adding packages

  • ایجاد پوشه tests و تنظیم اسکریپت تست Creating tests folder and setting up test script

  • نوشتن اولین تست ساده ما Writing our first simple test

  • ساختن اولین قبولی ساده آزمون ما! Making our first simple test pass!

  • دریافت HTML از وب سایت برای تست های ما Getting HTML from the website for our tests

  • خواندن فایل HTML برای تست های ما Reading HTML file for our tests

  • در حال نوشتن تست های ما Writing out our tests

  • قبولی در آزمون عنوان Getting title test to pass

  • درست کردن آزمون URL! Making URL test pass!

  • در حال قبولی تست هود! Making hood test pass!

  • انجام آزمون نهایی برای پاس datePosted! Making the final test for datePosted pass!

  • یادداشت های پایانی + refactoring End notes + refactoring

صادرات نتایج اسکراپی وب به CSV Exporting web scraping results to CSV

صادرات نتایج اسکراپی وب به CSV Exporting web scraping results to CSV

  • صادرات نتایج اسکراپی وب به CSV Exporting web scraping results to CSV

رسیدگی به مشکلات شبکه Handling Network Problems

رسیدگی به مشکلات شبکه Handling Network Problems

  • رسیدگی به مشکلات شبکه در اسکراپر Craigslist ما Handling Network Problems in our Craigslist scraper

تجزیه Robots.txt Robots.txt parsing

تجزیه Robots.txt Robots.txt parsing

  • robots.txt چیست؟ What is robots.txt?

  • شروع پروژه Initialising project

  • نمونه ای از استفاده از ربات های تجزیه کننده Example of usage robots-parser

  • تجزیه robots.txt از یک سایت واقعی Parsing robots.txt from a real site

خراش دادن سایت ها با صفحه بندی Scraping Sites with Pagination

خراش دادن سایت ها با صفحه بندی Scraping Sites with Pagination

  • صفحه‌بندی ساده در 10 دقیقه! Simple Pagination Scraper in 10 mins!

خراش دادن سایت ها با احراز هویت Scraping Sites with Authentication

خراش دادن سایت ها با احراز هویت Scraping Sites with Authentication

  • مقدمه پروژه خراش دادن احراز هویت Intro to authentication scraping project

  • در حال بررسی درخواست ورود Looking at Login request

  • ایجاد مجدد لاگین در Postman Recreating login in Postman

  • ایجاد درخواست ورود ما در Nodejs Creating our login request in Nodejs

  • استفاده از Puppeteer به جای Request Using Puppeteer instead of Request

خراش دادن یک وب سایت با احراز هویت کوکی/جلسه و توکن های CSRF Scraping a website with Cookie/Session authentication and CSRF tokens

خراش دادن یک وب سایت با احراز هویت کوکی/جلسه و توکن های CSRF Scraping a website with Cookie/Session authentication and CSRF tokens

  • مقدمه پروژه Intro to project

  • تکرار درخواست ورود به سیستم در Postman - مشاهده اینکه چگونه کوکی ها مورد نیاز است Replicating login request inside Postman - seeing how cookies are required

  • ایجاد درخواست ما در Node.js و فعال کردن cookieJar Building out our request inside Node.js and enabling cookieJar

  • دریافت رمز CSRF از کوکی های ذخیره شده و استفاده از آن در درخواست ورود به سیستم POST Getting CSRF token from saved cookies and using it in our POST login request

Scraping Nordstrom.com - چگونه یک API مخفی پیدا کنید و از ساختن اسکراپر اجتناب کنید! Scraping Nordstrom.com - how to find a secret API and avoid building a scraper!

Scraping Nordstrom.com - چگونه یک API مخفی پیدا کنید و از ساختن اسکراپر اجتناب کنید! Scraping Nordstrom.com - how to find a secret API and avoid building a scraper!

  • معرفی پروژه Nordstrom.com Intro To Nordstrom.com project

  • به روز رسانی در مورد API مخفی در پشت Nordstrom Update about secret API behind Nordstrom

  • به روز رسانی دیگری در مورد Nordstrom - اکنون از Gzip استفاده می کنید Another update about Nordstrom - now using Gzip

  • یافتن API مخفی در پشت Nordstrom.com Finding the secret API behind Nordstrom.com

  • ایجاد یک درخواست API در داخل Postman Making a API request inside Postman

  • ایجاد یک REST API در Nodejs Express Creating a REST API in Nodejs Express

  • ارسال پارامترهای Query به REST API خودمان Passing Query Parameters to our own REST API

  • شروع پروژه React با create-react-app Starting React project with create-react-app

  • ایجاد یک درخواست API در داخل برنامه React Making a API Request inside the React app

  • یه چیزی Something

  • افزودن فرم به برنامه React Adding a form to React app

  • افزودن عبارت جستجو به فرم Adding search query to form

خراش دادن Imdb با استفاده از NightmareJs Scraping Imdb using NightmareJs

خراش دادن Imdb با استفاده از NightmareJs Scraping Imdb using NightmareJs

  • مقدمه پروژه Intro to Project

  • راه اندازی پروژه Project Setup

  • بنابراین ما چه چیزی را خراش می دهیم؟ So What Are We Scraping?

  • Scraping 100 عنوان فیلم برتر Scraping Top 100 Movie Titles

  • بیایید چند رتبه خوب دریافت کنیم! Let's Get Some Good Ratings!

  • رتبه پیزی آسان و آدرس توضیحات Easy Peasy Rank and Description Url

  • انتخابگر Css برای آدرس پوستر Css Selector For The Poster Url

  • خراش دادن URL پوستر Scraping The Poster URL

  • چرا درخواست نمی تواند این صفحه را خراش دهد - چرا اکنون از NightmareJs استفاده می کنیم Why Request Can't Scrape This Page - Why We're Using NightmareJs Now

  • وارد کردن NightmareJs و دریافت انتخابگر Css تصویر پوستر ما Importing NightmareJs and Getting Our Poster Image Css Selector

  • خراش دادن URL تصویر پوستر با NightmareJs Scraping the Poster Image URL with NightmareJs

  • ذخیره تصویر پوستر در دیسک! Saving the Poster Image to Disk!

خراش دادن AirBnb با استفاده از Puppeteer Scraping AirBnb using Puppeteer

خراش دادن AirBnb با استفاده از Puppeteer Scraping AirBnb using Puppeteer

  • مقدمه پروژه Intro to Project

  • راه اندازی پروژه Project Setup

  • دقیقا چی میتراشیم؟ What are we scraping exactly?

  • شیء نمونه + افست شاخص Sample Object + Index Offset

  • نگاهی به HTML صفحه Index Looking at the HTML of the Index page

  • باز کردن صفحه با Puppeteer Opening Page with Puppeteer

  • دریافت آدرس های اینترنتی خانه ها از صفحه فهرست Getting the URLS of the homes from the index page

  • آماده شدن برای خراش URLهای توضیحات Getting ready to scrape description URLS

  • باز کردن Homes در یک صفحه جداگانه Opening Homes in a separate page

  • قیمت اسکرپینگ در هر شب Scraping Price Per Night

  • چرا ما اکنون از عبارات منظم استفاده می کنیم Why we are using Regular Expressions now

  • حذف تعداد مهمان مجاز به استفاده از عبارات منظم است Scraping number of guests allowed using regular expressions

  • خراش دادن تخت، اتاق خواب، حمام Scraping the beds, bedrooms, baths

معماری برای اسکراپر وب با یک API Architecture for web scraper with an API

معماری برای اسکراپر وب با یک API Architecture for web scraper with an API

  • معرفی این بخش Intro to this section

  • APIهای خراش دادن زمان‌دار در مقابل خراش‌های درخواستی Timed scraping vs on-demand scraping API's

ذخیره داده های خراش دادن در MongoDB Saving scraping data to MongoDB

ذخیره داده های خراش دادن در MongoDB Saving scraping data to MongoDB

  • یک اسکراپر فوق العاده ساده Reddit در 5 دقیقه بسازید Build a super simple Reddit scraper in 5 minutes

  • اتصال به پایگاه داده MongoDB Connecting to MongoDB database

  • اتصال به پایگاه داده MongoDB با استفاده از Mongoose Connecting to MongoDB database using Mongoose

  • ایجاد یک مدل MongoDB و ذخیره Creating a MongoDB model and saving

استقرار یک اسکراپر دوره ای برای تولید Deploying a periodic scraper to production

استقرار یک اسکراپر دوره ای برای تولید Deploying a periodic scraper to production

  • مقدمه Intro

  • مقدمه ای برای کد Intro to code

  • در حال اعزام به هروکو Deploying to Heroku

  • استقرار در Google Cloud Platform/Google App Engine Deploying to Google Cloud Platform / Google App Engine

استقرار وب اسکراپر Puppeteer در Heroku Deploying Puppeteer web scraper to Heroku

استقرار وب اسکراپر Puppeteer در Heroku Deploying Puppeteer web scraper to Heroku

  • استقرار وب scraper Puppeteer در Heroku با استفاده از buildpacks Deploying Puppeteer web scraper to Heroku using buildpacks

جایزه: مقدمه GraphQL BONUS: GraphQL Introduction

جایزه: مقدمه GraphQL BONUS: GraphQL Introduction

  • آشنایی با GraphQL + ایجاد GraphQL API در 10 دقیقه Introduction to GraphQL + Creating a GraphQL API in 10 minutes

خراش دادن یک صفحه اسکرول بی نهایت (فیس بوک، اینستاگرام، پینترست و غیره) Scraping a infinite scrolling page (Facebook, Instagram, Pinterest etc.)

خراش دادن یک صفحه اسکرول بی نهایت (فیس بوک، اینستاگرام، پینترست و غیره) Scraping a infinite scrolling page (Facebook, Instagram, Pinterest etc.)

  • مقدمه ای برای خراش دادن صفحات پیمایش بی نهایت Intro to scraping infinite scrolling pages

  • راه اندازی پروژه Project setup

  • عملکرد استخراج آیتم ها Extracting items function

  • پیمایش و خراش دادن اقلام Scrolling and Scraping items

درپشتی مخفی برای خراشیدن فیس بوک بدون فعال کردن جاوا اسکریپت! SECRET BACKDOOR to Scraping Facebook without JavaScript enabled!

درپشتی مخفی برای خراشیدن فیس بوک بدون فعال کردن جاوا اسکریپت! SECRET BACKDOOR to Scraping Facebook without JavaScript enabled!

  • چگونه بدون جاوا اسکریپت به سایت فیسبوک دسترسی پیدا کنیم How to get access to Facebook's site without JavaScript

  • چگونه از Postman برای دریافت دیوار فیس بوک استفاده کنیم How to use Postman to get Facebook's wall

  • راه اندازی پروژه برای فیس بوک Scraper Project Setup for Facebook Scraper

  • ایجاد درخواست POST ما در Nodejs Creating our POST request in Nodejs

  • جعل کردن عامل کاربر و ورود به فیس بوک Faking our User-Agent and logging in to Facebook

  • گرفتن دیوار فیس بوک ما! Getting our Facebook wall!

پرسش و پاسخ دانشجو Student Q&A

پرسش و پاسخ دانشجو Student Q&A

  • درخواست HTML با کروم HTML متفاوت است Request HTML is different from Chrome HTML

  • نحوه خراش دادن جدول صفحه بندی شده که URL را تغییر نمی دهد How to scrape a paginated table that doesn't change URL

جایزه - دوره های دیگر Node.js من BONUS - My other Node.js courses

جایزه - دوره های دیگر Node.js من BONUS - My other Node.js courses

  • آیا دوره را دوست داشتید؟ دوره های دیگر من را اینجا ببینید :) Did you like the course? Check out my other courses here :)

نمایش نظرات

آموزش Scraping وب در Nodejs و JavaScript
جزییات دوره
11 hours
146
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
9,877
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Stefan Hyltoft Stefan Hyltoft

مهندس نرم افزار B.Eng