ساخت WebScraper سی شارپ

لرن سایت,آموزش برنامه نویسی سی شارپ,آموزش طراحی سایت,آموزش برنامه نویسی اندروید,آموزش SQL c# android php jquery,قالب سایت

شما اینجا هستید : صفحه اصلی

با عضویت در کانال تلگرامی لرن سایت ، اولین فردی باشید که از تخفیفات و مطالب جدید خبردار می شوید !

ساخت WebScraper سی شارپ

ساخت webscraper سی شارپ

امروز نحوه استفاده از داده های سایت هایی که API یا وب سرویسی برای گرفتن اطلاعات در نظر نگرفته اند را بصورت کامل به شما آموزش می دهیم .

اگر سایتی وب سرویسی را برای استفاده از اطلاعات ارائه ندهد چه راهی برای گرفتن و استفاده از اطلاعات داریم ؟ این امر توسط WebScraping مقدور است؛ اکثر سایت ها API ای را جهت استفاده از داده های سایت دارند اما برای استفاده از داده های سایت هایی که API ندارند باید توسط اسکرپ ، اطلاعات را از سایت خارج کنیم ، اما چطور؟ برای یادگیری با لرن سایت همراه باشید.

دید کلی از مطلب :
در این مقاله Scraper ای را در کنسول اپلیکیشن ( Console Application ) برای سایت Yellowpages می سازیم و از این سایت اطلاعات استخراج می کنیم که توسط HtmlAgilityPack اینکار انجام می شود و همچنین با DOM صفحات نیز آشنا می شویم .

 

توضیح Document Object Model در صفحه وب :
برای WebScraping ما ابتدا نیاز به درک چیستی DOM در صفحه وب داریم ، پس به سایت Yellowpages.Com رفته و درباره هر آنچه که میخواهید جستجو کنید . ما درباره Software in sydney سرچ می کنیم. شما نتایجی را مطابق شکل زیر مشاهده می کنید.

 

 

هم اکنون می رویم تا Document Object Model برای این سایت توضیح داده و این موضوع را درک کنیم ، برای نمونه ما می خواهیم نام عنوان های نتایج را بگیریم ، برای مثال موس را روی عنوان “Teach in a Sec” برده و راست کلیک کرده سپس “Inspect” را کلیک کنید. صفحه ای مانند صفحه زیر را مشاهده خواهید کرد که المنت هایلایت شده است.

اکنون می توان سلسله مراتب المنت ها را در اینجا مشاهده کرد. متن مورد نظر ما در “<a>” است و ما باید از آن استفاده کنیم. کد هایی که در مرورگر رندر شده است کد های اچ تی ام ال است، بنابراین برای تمام المنت های اچ تی ام ال ID یا CLASS ای وجود دارد که منحصر به فرد آن المنت است و می تواند توسط آن ، المنت را شناسایی کرد. پس، اگر نگاهی دقیق بیاندازید یا المنت های دیگر را به صورت مشابه بررسی کنید، خواهید دید که همه عنوان ها دقیقا دارای یک کلاس هستند. بنابراین، با استفاده از نام کلاس و همچنین، نام المنت، ما می توانیم به راحتی تمام اسامی Header ( عناوین ) را در صفحه yellowpages بدست آوریم. به تصویر پایین توجه کنید.

 

 

حالا ما می خواهیم ویژوال استودیو را باز کنیم و WebScrapping را واقعا انجام دهیم !

  1. به Visual Studio بروید
  2. . یک برنامه Console در C # ایجاد کنید.
  3. به Solution Explorer بروید و روی رفرنس ها راست کلیک کرده و روی Manage Nuget Pack کلیک کنید و سپس “HtmlAgilityPack” جستحو کنید و آن را نصب کنید.

HtmlAgilityPack پکیجی در C # است که ما را قادر به جستجو  Document Object Model می کند و هر گونه اطلاعاتی را که می خواهیم استخراج می کند. ما این را در عمل بیشتر خواهیم دید.

پس از نصب بسته ، به فایل “Program.cs” بروید و از کد زیر استفاده کنید تا وب Scraper ما را اجرا کند.

مطلب پیشنهادی :  فیلم آموزش ساخت ستاپ در ویژوال استودیو

یک نمونه از “HtmlWeb” ایجاد کنید که HTML را از نشانی اینترنتی داده شده با استفاده از HTTP بارگذاری می کند.

 

 

ما قصد داریم از کلاس مشترک عنوان ها ( که دربالا هم در این باره توضیح داده شد ) برای گرفتن عنوان ها استفاده کنیم ، بنابرین کد زیر را بنویسید :

 

توجه داشته باشید که ما از دو “/” و سپس نام المنت که شناسایی و همچنین نام کلاس که آن را نیز از Document Object Model  شناسایی کرده ایم ، استفاده و آن را به لیست اضافه کردیم، همچنین می توانیم از مزایای LINQ ، پکیج HtmlAgilityPack نیز استفاده کنیم ، به همین دلیل بستگی به نیازهای شما هر آنچه که بخواهید می توانید کدنویسی کنید..

اکنون، در مرحله نهایی، به سادگی برای لیست حلقه تعریف کنید و از ویژگی “InnerText” هر آیتم برای گرفتن نام آنها استفاده کنید.

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

می توانید مشاهده کنید که ما با موفقیت یک وب Scraper در C # ایجاد کردیم که اطلاعات را از yellowpages بر اساس سناریوی ما بیرون می آورد.

دیگه چی؟

اکنون، به روش مشابه،  شما می توانید نتایجی را که در صفحه بعدی این وب سایت قرار دارد، دریافت کنید. برای اینکار همیشه مراقب تغییر آدرس URL صفحه باشید. شما یک سرنخ از آنچه شما واقعا نیاز دارید را توسط لینک دریافت می کنید. به عنوان مثال، شما می خواهید نتایج صفحه دوم را نیز بگیرید، بنابراین شما URL زیر را در روش “HtmlWeb.Load ()” بارگذاری کنید و همان اصل بالا را دنبال می کنید.کافیست به page=2 آخر لینک توجه کنید  ! با تغییر این عدد شما به صفحات دیگر نیز دسترسی خواهید داشت .

 

 

همچنین، شما می توانید این را در برنامه های دسکتاپ استفاده کنید که در آن نام شهر و شرایط جستجو را وارد و نتیجه را دریافت کنید ، کافیست “Software” را با {0} جایگزین کنید و با استفاده از روش string.format ، کلمه ای که می خواهید را به URL انتقال دهید. سپس، رکوئست را بفرستید و در نهایت تمام نتایج مربوط به آن را با توجه به ورودی دریافت خواهید کرد.

ما در نهایت ، اولین اسکنر وب خود را در C # با استفاده از HtmlAgilityPack ایجاد کردیم ، قابل ذکر است کنسول یا ویندوز فرم فرقی ندارد و می توانید توسط اموزش بالا ، برنامه خود را در ویندوز فرم نیز پیاده کنید.

 

لذت ببرید!

اگه مطلب خوشتون اومد پس لطفا به اشتراک بذارین تا بقیه هم خوششون بیاد :)

نظرات

1
دیدگاه بگذارید

avatar
1 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
محمد Recent comment authors
  Subscribe  
اطلاع رسانی از :
Tesla
عضو
Tesla

درود
لطفاً برای کتابخانه HtmlAgilityPack آموزش های زیادی بذارین خیلی کتابخانه خوب و مفیدی هست.