Python-ի և Requests գրադարանի հետ Web Crawler-ի մշակում


Նորությունների հոդվածներից և էլեկտրոնային առևտրի հարթակներից մինչև սոցիալական մեդիայի թարմացումներ և բլոգային գրառումներ, համացանցը արժեքավոր տվյալների գանձարան է: Այնուամենայնիվ, այս տեղեկատվությունը հավաքելու համար անթիվ վեբ էջերում ձեռքով նավարկելը ժամանակատար և հոգնեցուցիչ խնդիր է: Ահա թե որտեղ է վեբ սողալը գալիս:

Ի՞նչ է վեբ սողալը:

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

Python-ն իր պարզությամբ և բազմակողմանիությամբ դարձել է ծրագրավորման ամենատարածված լեզուներից մեկը վեբ սողացող առաջադրանքների համար: Գրադարանների և շրջանակների հարուստ էկոհամակարգը ծրագրավորողներին տալիս է հզոր գործիքներ՝ արդյունավետ և ամուր վեբ սողիկներ ստեղծելու համար: Այդպիսի գրադարաններից է հարցումների գրադարանը:

Python-ը պահանջում է գրադարան

Հարցումների գրադարանը լայնորեն օգտագործվող Python գրադարան է, որը հեշտացնում է HTTP հարցումների ուղարկման և վեբ էջերի հետ փոխգործակցության գործընթացը: Այն ապահովում է ինտուիտիվ ինտերֆեյս՝ վեբ սերվերներին հարցումներ կատարելու և պատասխանները մշակելու համար:

Ընդամենը մի քանի տող կոդով դուք կարող եք առբերել վեբ բովանդակությունը, արդյունահանել տվյալներ և կատարել տարբեր գործողություններ առբերված տեղեկատվության վրա:

Սկսել

Սկսելու համար, եկեք ապահովենք, որ մենք ունենք հարցումների գրադարանը տեղադրված: Մենք կարող ենք հեշտությամբ տեղադրել այն՝ օգտագործելով pip՝ Python փաթեթների կառավարիչը:

Բացեք ձեր տերմինալը կամ հրամանի տողը և մուտքագրեք հետևյալ հրամանը.

pip install requests

Տեղադրված հարցումների գրադարանով մենք պատրաստ ենք խորանալ հիմնական բովանդակության մեջ և սկսել զարգացնել մեր վեբ սողունը:

Քայլ 1. Պահանջվող գրադարանների ներմուծում

Սկսելու համար մենք պետք է ներմուծենք հարցումների գրադարանը, որը մեզ հնարավորություն կտա ուղարկել HTTP հարցումներ և առբերել վեբ էջի տվյալները: Մենք կներմուծենք նաև այլ անհրաժեշտ գրադարաններ տվյալների մանիպուլյացիայի և վերլուծության համար:

import requests
from bs4 import BeautifulSoup 

Քայլ 2. GET հարցում ուղարկելը

Վեբ սողալու առաջին քայլը վեբ էջին GET հարցում ուղարկելն է: Մենք կարող ենք օգտագործել հարցումների գրադարանի get() ֆունկցիան՝ վեբ էջի HTML բովանդակությունը առբերելու համար:

url = "https://example.com"
response = requests.get(url)

Քայլ 3. HTML բովանդակության վերլուծություն

Երբ մենք ունենք HTML բովանդակություն, մենք պետք է այն վերլուծենք՝ համապատասխան տեղեկատվությունը հանելու համար: BeautifulSoup գրադարանն ապահովում է HTML-ը վերլուծելու և դրա տարրերով նավարկելու հարմար միջոց:

soup = BeautifulSoup(response.text, "html.parser")

Քայլ 4. տվյալների արդյունահանում

Վերլուծված HTML-ի միջոցով մենք այժմ կարող ենք արդյունահանել ցանկալի տվյալները: Սա կարող է ներառել կոնկրետ տարրերի տեղորոշում, տեքստի արդյունահանում, հատկանիշի արժեքների առբերում և այլն:

# Find all <a> tags
links = soup.find_all("a")

# Extract href attribute values
for link in links:
    href = link.get("href")
    print(href)

Քայլ 5. Բազմաթիվ էջերի սողում

Շատ դեպքերում մենք ցանկանում ենք, որ մեր վեբ սողունը նավարկի բազմաթիվ էջերի միջով՝ հետևելով հղումներին: Մենք կարող ենք հասնել դրան՝ կրկնելով արդյունահանված հղումները և կրկնելով գործընթացը յուրաքանչյուր էջի համար:

for link in links:
    href = link.get("href")
    if href.startswith("http"):
        response = requests.get(href)
        # Continue processing the page

Օրինակ

Ահա մի պարզ վեբ սողացողի օրինակ, որը հանում և տպում է «href» հատկանիշի բոլոր արժեքները վեբ էջից: Կոդը ցույց է տալիս Python-ի, հարցումների գրադարանի և BeautifulSoup-ի անխափան ինտեգրումը ֆունկցիոնալ վեբ սողուն մշակելու համար: Փոփոխելով կոդը և կիրառելով լրացուցիչ տեխնիկա՝ դուք կարող եք հարմարեցնել վեբ սողունը՝ ձեր հատուկ պահանջներին համապատասխան:

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

links = soup.find_all("a")

for link in links:
    href = link.get("href")
    print(href)

Այն կստեղծի հետևյալ արդյունքը.

/
/contact
/about

Եզրակացություն

Եզրափակելով, Python-ի և հարցումների գրադարանի միջոցով վեբ սողալը ձեզ հնարավորություն է տալիս ուսումնասիրել ինտերնետի հսկայական աշխարհը և արժեքավոր տվյալներ կորզել: Ավտոմատացնելով վեբ էջերում նավարկելու գործընթացը, հետևելով հղումներին և տեղեկատվության արդյունահանմանը, վեբ սողունները խնայում են ժամանակ և ջանք տվյալների հավաքագրման և վերլուծության առաջադրանքներում: Այնուամենայնիվ, կարևոր է հաշվի առնել կայքի ծառայության պայմանները, հարգել վեբկայքի քաղաքականությունը և խուսափել սերվերների գերծանրաբեռնվածությունից չափազանց մեծ հարցումներով: