Այս ձեռնարկում մենք կօգտագործենք C#՝ Craigslist-ը քերելու համար՝ վեբ մշակման հնարքներ փնտրելու համար: Մենք կօգտագործենք .NET Core-ը ScrapySharp-ի հետ: Սկսելու համար ձեզ հարկավոր է տեղադրել .NET Core SDK, Visual Studio Code և C# ընդլայնումը Visual Studio Code-ի համար: Մենք կստեղծենք կոնսոլային հավելված, բայց դուք կարող եք նմանատիպ մոտեցում ցուցաբերել ցանկացած այլ տեսակի նախագծի նկատմամբ:

Վիդեո ձեռնարկ

Վահանակի հավելվածի ստեղծում

Առաջին բանը, որ մենք պետք է անենք, այս նախագծի համար թղթապանակ ստեղծելն է: Դուք կարող եք տեղադրել այն, որտեղ ցանկանում եք և անվանել այն, ինչ ցանկանում եք: Այս նախագծի համար ես ստեղծեցի «Scraper» անունով թղթապանակ և տեղադրեցի այն իմ աշխատասեղանին:

Այն ստեղծելուց հետո բացեք այդ թղթապանակը VS Code-ում: .NET Core-ը գալիս է հրամանի տողի ինտերֆեյսով, որը մենք կօգտագործենք մեր վահանակի հավելվածը ստեղծելու համար: VS Code-ում բացեք ձեր տերմինալը (Տերմինալ → նոր Տերմինալ) և գործարկեք այս հրամանը.

dotnet new console

Այս հրամանի գործարկումից հետո դուք պետք է ունենաք հետևյալ ֆայլերը.

Հիմնական ֆայլը, որի վրա մենք կմշակենք, Program.cs-ն է և այն պետք է այսպիսի տեսք ունենա.

Վրիպազերծման կարգավորումների կարգավորում

Հավելվածը վրիպազերծելու համար մենք պետք է կազմաձևենք launch.json ֆայլը: Դա անելու համար սեղմեք վրիպազերծիչի պատկերակը VS Code-ում: Այնուհետև կտտացրեք «ստեղծել launch.json ֆայլը»:

Ստեղծել launch.json ֆայլի վրա սեղմելուց հետո ձեզ պետք է ներկայացվի բացվող ցուցակ: Այդ ցանկում ընտրված է .Net Core: Սա կստեղծի այս կոնֆիգուրացիան ձեր launch.json ֆայլում: Նախքան շարունակելը, մենք պատրաստվում ենք փոխել մեկ հատկություն, որպեսզի կարողանանք մուտքագրել մուտքերը: Փոխեք վահանակի հատկությունը interiorConsole-ից դեպի արտաքին Տերմինալ:

Ստուգելու համար, որ այն աշխատում է, կտտացրեք «play» կոճակը վրիպազերծման պատուհանում.

Սա կգործարկի ձեր տերմինալը Mac-ում կամ հրամանի տողը Windows-ում:

ScrapySharp-ի ավելացում

ScrapySharp-ը Nuget փաթեթ է, որը մենք պատրաստվում ենք ավելացնել, որը շատ ավելի հեշտ կդարձնի HTML փաստաթղթերի վերլուծությունը: Փաթեթը ավելացնելու համար բացեք տերմինալը և գործարկեք հետևյալ հրամանը.

dotnet add package ScrapySharp

Այժմ, երբ մենք ավելացրել ենք ScrapySharp-ը որպես Nuget փաթեթ, մենք պետք է այն ներմուծենք մեր Program.cs ֆայլ: Ֆայլի վերևում «օգտագործելով System;» կետը: ավելացնել հետևյալը.

using System.Collections.Generic;
using HtmlAgilityPack;
using ScrapySharp.Extensions;
using ScrapySharp.Network;

Scraping Craigslist for Developer Gigs

Դուք կարող եք ստեղծել քերիչ գրեթե ամեն ինչի համար, բայց մեր նպատակների համար մենք կստեղծենք մեկը՝ Craigslist-ը քերելու և ծրագրավորողների համերգներ որոնելու համար: Հատկապես ծրագրավորողների համերգներ Նյու Յորքում: Մեր սկզբնական URL-ը ստանալու համար ես գնացի Craigslist, գտա Նյու Յորք քաղաքը և սեղմեցի համակարգչային համերգների վրա: Սա բերեց հետևյալ URL-ը. https://newyork.craigslist.org/d/computer-gigs/search/cpg: Սա կլինի մեր մեկնարկային կետը քերիչի համար:

Նախնական URL-ի քերծում

Առաջին բանը, որ մենք ուզում ենք անել, բոլոր հղումները ստանալն է գլխավոր համերգների էջում: Դա անելու համար մենք կօգտագործենք ScrapySharp ScrapingBrowser-ը: Սա նմանակում է իրական զննարկիչին, որը նավարկում է դեպի վեբ էջ: Մենք սա կպահենք որպես գլոբալ փոփոխական, քանի որ այն նորից կօգտագործենք մեր ստեղծած տարբեր գործառույթներում: Հենց վերևում static void Main(string[] args) ավելացրեք հետևյալ տողը.

static ScrapingBrowser _browser = new ScrapingBrowser();

Այժմ մենք կստեղծենք մեկ այլ մեթոդ հենց ստատիկ void Main (string[] args) տակ, որը վերադարձնում է որոշակի վեբ էջի HTML:

Այնուհետև մենք կստեղծենք մեկ այլ մեթոդ մեր GetHtml-ի վերևում և Հիմնականից ներքև՝ մեր Craigslist URL-ի գլխավոր էջի բոլոր հղումները գրավելու համար: Այս մեթոդը վերցնում է URL, ստանում է HTML-ը, վերցնում էջի բոլոր հղումները, ստուգում է, թե արդյոք դրանք հղումներ են դեպի համերգներ (ունի .html ընդլայնում), և դրանք տեղադրում է Ցուցակում:

Այժմ, երբ մենք ստեղծել ենք այս մեթոդը, եկեք այն անվանենք մեր Հիմնական մեթոդով և փոխանցենք մեր գլխավոր հաղորդման էջի URL-ը:

Հանդիսության մանրամասների քերծում

Այժմ, երբ մենք ունենք համերգների հղումներ, եկեք ստեղծենք մի մեթոդ, որը վերլուծում է էջը և դուրս է հանում գրառման վերնագիրը և նկարագրությունը: Ֆայլի ներքևում եկեք ստեղծենք նոր դաս, որը կգործի որպես մեր մոդել՝ էջի մանրամասները պահելու համար:

Այնուհետև մենք կարող ենք ստեղծել էջից մանրամասները քերելու մեթոդ: Համոզվեք, որ դիտեք այս հոդվածի տակ գտնվող տեսանյութը, որպեսզի տեսնեք, թե ինչպես եմ որոշել, թե ինչ ճանապարհ անցնել SelectSingleNode:

Այժմ մենք կարող ենք զանգահարել մեր GetPageDetails մեթոդը Main-ի ներսում:

Զտիչ երգեր

Այս պահին կարող են լինել շատ համերգներ, որոնք քերվում են հատկապես Նյու Յորքի տարածքում: Կարող եք նաև տեսնել, որ Craigslist-ում կան բազմաթիվ սպամային համերգներ:

Այսպիսով, մենք չենք վատնում մեր ժամանակը սրա հետ, եկեք ավելացնենք որոնման զտիչ:

Մեր Main մեթոդում եկեք մեզ թույլ տանք մուտքագրել որոնման տերմին Console.ReadLine(-ով): Այժմ, երբ մեր ծրագիրը աշխատում է, մենք մուտքագրում ենք որոնման տերմինը և սեղմում ենք Enter: Այնուհետև մենք կօգտագործենք այդ որոնման տերմինը մեր «ստանալ էջի մանրամասների» գործառույթում՝ որոշելու համար, թե արդյոք կավելացնենք ցուցակը մեր վերադարձած PageDetails ցանկում:

CSV-ում երգեր գրելը

Այս պահին մենք տեղադրել ենք մեր քերիչը և միայն համապատասխան արդյունքներ ենք տալիս: Այսպիսով, հիմա մենք պարզապես պետք է դրանք դնենք օգտագործելի ձևաչափի մեջ: Դրա համար մենք կօգտագործենք մեկ այլ NuGet փաթեթ, որը կոչվում է CsvHelper (https://www.nuget.org/packages/CsvHelper):

Տերմինալում գործարկեք այս հրամանը.

dotnet add package CsvHelper

NuGet փաթեթը տեղադրելուց հետո մեր գոյություն ունեցող կախվածությունների տակ գտնվող ֆայլի վերևում ներմուծեք այն կախվածությունները, որոնք մեզ անհրաժեշտ կլինեն դրա համար:

using System.IO;
using System.Globalization;
using CsvHelper;

Հիմա եկեք գրենք այն մեթոդը, որը կստեղծի մեր CSV ֆայլը և կպահի այն մեր համակարգչում:

Վերոնշյալ մեթոդով մենք փոխանցել ենք էջի մանրամասների և որոնման տերմինի մեր ցանկը, օգտագործել ենք որոշակի տողերի միջակայք ֆայլի անվան վրա՝ այն եզակի դարձնելու համար և մեր արդյունքներով պահպանել ենք CSV: Վերջին քայլն այն օգտագործելն է մեր Հիմնական մեթոդում:

վերջ Այժմ դուք կարող եք քերթել համերգները Craigslist-ի ցանկացած էջից, որը ցանկանում եք: Ձեր Program.cs վերջնական ֆայլը պետք է նման լինի հետևյալին.

Դուք կարող եք դիտել Github Repo-ն այս կոդի համար այստեղ՝ https://github.com/TheDiligentDev/CraigslistScraper