Az internet hatalmas adattenger, amelyben számtalan értékes információ rejtőzik. Naponta milliárdnyi új adat keletkezik, frissül és válik elérhetővé a világhálón. Ez a folyamatosan bővülő digitális univerzum végtelen lehetőségeket kínál azok számára, akik képesek hatékonyan kinyerni, rendszerezni és elemezni ezeket az adatokat. Mindig is lenyűgözött, hogyan tudunk értékes információkat automatikusan kinyerni ebből a hatalmas adathalmazból, és hogyan tudjuk ezeket saját céljainkra hasznosítani.
A web scraping (webes adatkinyerés) egy olyan technika, amely lehetővé teszi számunkra, hogy automatizált módon gyűjtsünk adatokat weboldalakról. Lényegében egy olyan folyamatról beszélünk, amely során speciális programok segítségével strukturált formában nyerünk ki információkat különböző online forrásokból. Ez a megközelítés számos perspektívából vizsgálható: lehet egyszerű adatgyűjtési módszer, üzleti intelligencia eszköz, kutatási segédlet, vagy akár etikai és jogi kérdéseket felvető tevékenység is.
Az elkövetkező részekben részletesen megismerkedhetsz a web scraping alapjaival, technikai megvalósításával, gyakorlati alkalmazási területeivel, valamint az ezzel kapcsolatos etikai és jogi megfontolásokkal. Bemutatom a leghatékonyabb eszközöket és technikákat, amelyekkel bárki elkezdheti saját adatkinyerési projektjeit, függetlenül a programozási előismeretektől. Valós példákon keresztül láthatod, hogyan hasznosíthatod ezt a tudást a mindennapi életben vagy szakmai munkád során.
A web scraping alapjai
A digitális világban az adatok jelentik az új olajat. Minden kattintás, keresés, vásárlás és interakció adatokat generál, amelyek értékes információkat rejtenek. A web scraping technológia lehetővé teszi, hogy ezeket az adatokat szisztematikusan gyűjtsük és elemezzük.
Mit jelent pontosan a web scraping?
A web scraping (más néven web harvesting vagy web data extraction) egy olyan technika, amely segítségével automatikusan kinyerhetünk adatokat weboldalakról. Ahelyett, hogy manuálisan böngésznénk és másolnánk az információkat, egy script vagy program automatikusan letölti a weboldal tartalmát, majd kinyeri belőle a számunkra releváns adatokat.
Ez a folyamat általában a következő lépésekből áll:
- A céloldal letöltése (HTTP kérés küldése)
- A HTML tartalom elemzése (parsing)
- A kívánt adatok azonosítása és kinyerése
- Az adatok strukturált formában történő tárolása (pl. CSV, JSON, adatbázis)
A web scraping különösen hasznos, amikor nagy mennyiségű adatot szeretnénk gyűjteni több oldalról vagy rendszeresen frissülő forrásokból. Az automatizálás révén jelentős időt és energiát takaríthatunk meg, miközben pontosabb és átfogóbb adatkészlethez juthatunk, mint manuális gyűjtéssel.
„Az internet a világ legnagyobb és legdinamikusabban változó adatbázisa. A web scraping hidat képez e nyers adattenger és a strukturált, elemzésre kész információ között.”
A web scraping és a web crawling közötti különbség
Gyakran összemossák a web scraping és a web crawling fogalmát, pedig ezek különböző, bár egymással összefüggő technikák:
Web Crawling | Web Scraping |
---|---|
Weboldalak automatikus böngészése | Adatok kinyerése weboldalakról |
Linkek követése oldalról oldalra | Specifikus információk célzott gyűjtése |
Indexelés és felfedezés a fő cél | Adatkinyerés és -feldolgozás a fő cél |
Általában keresőmotorok használják | Adatelemzők, kutatók, vállalkozások használják |
Széles körű, de kevésbé mély | Keskenyebb fókuszú, de mélyebb elemzés |
A gyakorlatban gyakran kombinálják a két technikát: a crawler felfedezi és azonosítja a releváns oldalakat, míg a scraper kinyeri a szükséges adatokat ezekről az oldalakról.
Miért vált ilyen fontossá a web scraping?
Az elmúlt évtizedben a web scraping jelentősége exponenciálisan nőtt, köszönhetően több tényezőnek:
🌐 Az online elérhető adatok mennyisége robbanásszerűen növekszik
🔍 Az adatvezérelt döntéshozatal egyre fontosabbá válik
💻 A programozási eszközök és könyvtárak fejlődése demokratizálta a technológiát
📊 Az adatelemzés és a mesterséges intelligencia térnyerése új felhasználási területeket nyitott
🚀 A versenyképesség fenntartása érdekében a vállalkozásoknak naprakész piaci információkra van szükségük
A technológia fejlődésével a web scraping eszközök is egyre kifinomultabbá és felhasználóbarátabbá váltak, lehetővé téve, hogy nemcsak programozók, hanem üzleti szakemberek, kutatók és adatelemzők is hatékonyan használhassák őket.
Web scraping technológiák és eszközök

A web scraping megvalósításához különböző technológiák és eszközök állnak rendelkezésre, a programozási ismereteid szintjétől és a projekt komplexitásától függően. Lássuk, milyen lehetőségek közül választhatsz!
Programozási nyelvek és könyvtárak
A legtöbb web scraping projekt valamilyen programozási nyelven írt script segítségével valósul meg. Az alábbi nyelvek és könyvtárak különösen népszerűek ezen a területen:
Python – Kétségtelenül a legnépszerűbb nyelv web scraping célokra, köszönhetően az egyszerű szintaxisának és a gazdag könyvtár-ökoszisztémájának:
- Beautiful Soup: HTML és XML dokumentumok elemzésére szolgáló könyvtár, amely megkönnyíti az adatok kinyerését
- Scrapy: Komplex, nagy teljesítményű keretrendszer web crawling és scraping projektekhez
- Selenium: Automatizált böngészést tesz lehetővé, különösen hasznos dinamikus, JavaScript-alapú oldalakhoz
- Requests: Egyszerű HTTP kérések küldésére szolgáló könyvtár
- Pandas: Adatmanipulációra és -elemzésre szolgáló könyvtár
JavaScript/Node.js – Kiváló választás, különösen ha már ismered a webfejlesztést:
- Puppeteer: Google Chrome vezérlésére szolgáló Node.js könyvtár
- Cheerio: Szerver oldali jQuery-szerű funkciók HTML elemzéshez
- Axios: HTTP kérések küldésére
R – Statisztikai elemzésekhez és adatvizualizációhoz:
- rvest: Web scraping könyvtár R-hez
- httr: HTTP kérések kezelése
Java – Vállalati környezetben elterjedt:
- JSoup: HTML elemzés és manipuláció
- HtmlUnit: JavaScript támogatással rendelkező headless böngésző
No-code és low-code eszközök
Nem mindenki rendelkezik programozási ismeretekkel, vagy van ideje egyedi scriptek írására. Szerencsére számos eszköz létezik, amelyek minimális vagy nulla kódolással teszik lehetővé a web scraping-et:
- Octoparse: Vizuális interfész adatkinyeréshez, programozási ismeretek nélkül
- ParseHub: Komplex weboldalak scrapelése egyszerű kattintásokkal
- Import.io: Vállalati szintű adatkinyerési platform
- Web Scraper (Chrome bővítmény): Egyszerű böngésző alapú scraping
- Zapier: Automatizációs platform integrált web scraping képességekkel
Haladó technikák
Bizonyos esetekben a standard megközelítések nem elegendőek, különösen, ha:
- Dinamikus tartalmakkal dolgozunk (JavaScript által generált tartalom)
- Anti-scraping védelemmel ellátott oldalakat célzunk meg
- Nagy mennyiségű adatot kell feldolgoznunk
Ilyen esetekben haladó technikákra lehet szükség:
- Headless böngészők használata (pl. Puppeteer, Selenium)
- IP-rotáció és proxy szerverek alkalmazása
- User-Agent váltogatás és böngészési minták szimulálása
- CAPTCHA megoldó szolgáltatások integrálása
- Elosztott rendszerek kiépítése a terhelés elosztására
„A web scraping nem csupán adatok automatikus másolása – ez egy finoman hangolt párbeszéd a webszerverrel, ahol a megfelelő kérdésfeltevés művészete legalább olyan fontos, mint a válaszok értelmezése.”
Gyakorlati alkalmazási területek
A web scraping rendkívül sokoldalú technológia, amely számos iparágban és felhasználási területen bizonyított már. Lássuk, hogyan hasznosíthatod a mindennapi munkád során vagy vállalkozásodban!
Üzleti intelligencia és piackutatás
A vállalkozások számára létfontosságú, hogy naprakész információkkal rendelkezzenek a piacról, versenytársakról és fogyasztói trendekről:
- Árak monitorozása: Versenytársak árainak automatikus követése és összehasonlítása
- Termékadatok gyűjtése: Specifikációk, leírások, elérhetőség figyelése
- Vélemények és értékelések elemzése: Fogyasztói visszajelzések gyűjtése különböző platformokról
- Piaci trendek azonosítása: Új termékek, szolgáltatások és árazási stratégiák felismerése
- Versenytárs-elemzés: Marketing üzenetek, termékpaletta és pozicionálás figyelése
A rendszeres adatgyűjtés lehetővé teszi a piaci változások azonnali észlelését és a gyors reagálást, ami jelentős versenyelőnyt biztosíthat.
Ingatlan és pénzügyi adatok elemzése
Az ingatlan- és pénzügyi piacok adatvezérelt területek, ahol a pontos és naprakész információk kritikus fontosságúak:
- Ingatlanárak és -jellemzők gyűjtése: Különböző portálokról történő automatikus adatgyűjtés
- Részvényárak és pénzügyi mutatók követése: Tőzsdei adatok valós idejű elemzése
- Gazdasági hírek és jelentések feldolgozása: Automatikus információgyűjtés pénzügyi portálokról
- Befektetési lehetőségek szűrése: Személyre szabott kritériumok alapján történő keresés
- Árfolyamok és kamatlábak monitorozása: Pénzügyi termékek összehasonlítása
Kutatás és adatelemzés
Kutatók és elemzők számára a web scraping hatékony módszer nagy mennyiségű adat gyűjtésére:
- Tudományos publikációk és hivatkozások gyűjtése: Akadémiai adatbázisok feldolgozása
- Közösségi média elemzés: Felhasználói interakciók és trendek vizsgálata
- Időjárási adatok gyűjtése: Hosszú távú előrejelzések és historikus adatok elemzése
- Kormányzati adatok és statisztikák feldolgozása: Nyilvános adatbázisok automatizált lekérdezése
- Közvélemény-kutatási adatok aggregálása: Különböző források összehasonlító elemzése
Tartalom aggregáció és monitoring
A releváns tartalmak összegyűjtése és rendszerezése számos területen hasznos:
- Hírek és cikkek aggregálása: Személyre szabott hírfolyamok létrehozása
- Állásajánlatok gyűjtése: Különböző portálok ajánlatainak összesítése
- Eseménynaptárak készítése: Rendezvények és programok automatikus gyűjtése
- Social media monitoring: Márkaemítések és vélemények követése
- Termékek elérhetőségének figyelése: Értesítés, ha egy keresett termék újra elérhetővé válik
„A web scraping olyan, mint egy digitális régészet – rétegről rétegre tárja fel az internet által őrzött információk kincsestárát, hogy új összefüggéseket és mintázatokat fedezzen fel bennük.”
E-commerce és árazási stratégiák
Az online kereskedelem területén a web scraping különösen értékes eszköz:
Felhasználási terület | Előnyök | Tipikus adatforrások |
---|---|---|
Dinamikus árazás | Versenyképes árak, optimalizált profit | Versenytársak webshopjai |
Készletoptimalizálás | Hatékony készletgazdálkodás, hiánycikkek elkerülése | Beszállítói oldalak, piacterek |
Termékadatok gazdagítása | Részletesebb termékinformációk | Gyártói oldalak, szakmai portálok |
Vásárlói visszajelzések | Termékfejlesztés, minőségbiztosítás | Értékelő oldalak, fórumok |
Új termékek felfedezése | Kínálatbővítés, trendkövetés | Nemzetközi piacterek, gyártói oldalak |
Web scraping lépésről lépésre

Ha szeretnéd kipróbálni a web scraping-et a gyakorlatban, érdemes egy egyszerű projekttel kezdeni. Az alábbiakban végigvezetlek egy alapvető web scraping folyamaton, a tervezéstől a megvalósításig.
A projekt megtervezése
Minden sikeres web scraping projekt alapos tervezéssel kezdődik:
- Célok meghatározása: Mit szeretnél elérni? Milyen adatokra van szükséged?
- Céloldalak azonosítása: Mely weboldalak tartalmazzák a kívánt információkat?
- Adatstruktúra tervezése: Hogyan fogod tárolni és rendszerezni a kinyert adatokat?
- Jogi és etikai megfontolások: Ellenőrizd a céloldal felhasználási feltételeit és robots.txt fájlját
- Technikai megközelítés kiválasztása: Milyen eszközöket és technikákat fogsz használni?
Weboldal elemzése
Mielőtt elkezdenéd a tényleges scraping-et, alaposan meg kell ismerned a céloldal szerkezetét:
- Nyisd meg a weboldalt a böngésződben
- Használd a fejlesztői eszközöket (F12 vagy jobb klikk > Vizsgálat)
- Azonosítsd a kívánt adatokat tartalmazó HTML elemeket
- Figyelj a mintázatokra az oldalszerkezetben
- Ellenőrizd, hogy az oldal használ-e dinamikus betöltést (JavaScript)
A HTML struktúra alapos megértése kulcsfontosságú a hatékony selector-ok írásához, amelyek pontosan célozzák a kívánt adatokat.
Egyszerű Python scraper készítése
Íme egy egyszerű példa Python használatával, amely bemutatja az alapvető web scraping folyamatot:
import requests
from bs4 import BeautifulSoup
import csv
# 1. Weboldal letöltése
url = "https://example.com/products"
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
# 2. HTML elemzése
soup = BeautifulSoup(response.content, "html.parser")
# 3. Adatok kinyerése
products = []
for product in soup.select(".product-item"):
name = product.select_one(".product-name").text.strip()
price = product.select_one(".product-price").text.strip()
availability = product.select_one(".product-availability").text.strip()
products.append({
"name": name,
"price": price,
"availability": availability
})
# 4. Adatok mentése CSV fájlba
with open("products.csv", "w", newline="", encoding="utf-8") as csvfile:
fieldnames = ["name", "price", "availability"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product in products:
writer.writerow(product)
print(f"Sikeresen lementve {len(products)} termék adata!")
Ez a script négy alapvető lépést hajt végre:
- Letölti a weboldal HTML tartalmát
- Elemzi a HTML struktúrát
- Kinyeri a termékadatokat
- Elmenti az adatokat CSV formátumban
Gyakori kihívások és megoldások
A web scraping során számos kihívással találkozhatsz. Íme néhány gyakori probléma és azok megoldása:
Dinamikus tartalom kezelése
- Probléma: Az oldal JavaScript segítségével tölti be a tartalmat
- Megoldás: Használj böngésző-automatizáló eszközöket, mint a Selenium vagy Puppeteer
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
# Várakozás a dinamikus tartalom betöltésére
driver.implicitly_wait(10)
# Most már hozzáférhetünk a JavaScript által generált tartalomhoz
html_content = driver.page_source
Rate limiting és blokkolás elkerülése
- Probléma: A weboldal korlátozza a kérések számát vagy blokkolja a scrapelést
- Megoldás: Késleltetés beiktatása, fejlécek testreszabása, proxy használata
import requests
import time
import random
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "hu-HU,hu;q=0.9,en-US;q=0.8,en;q=0.7",
"Referer": "https://www.google.com/"
}
for url in urls:
response = requests.get(url, headers=headers)
# Feldolgozás...
# Véletlenszerű késleltetés a kérések között
time.sleep(random.uniform(3, 7))
Pagination (lapozás) kezelése
- Probléma: Az adatok több oldalra vannak elosztva
- Megoldás: Ciklus használata a lapok bejárására
base_url = "https://example.com/products?page="
all_products = []
for page_num in range(1, 11): # 1-től 10-ig
page_url = base_url + str(page_num)
# Oldal scrapelése és termékek hozzáadása a listához
# ...
print(f"{page_num}. oldal feldolgozva")
„A jó web scraping olyan, mint a tai chi – nem az erővel, hanem a megfelelő technikával és ritmussal érheted el a célod. Tiszteld a weboldalt, és az is tisztelni fog téged.”
Etikai és jogi megfontolások
A web scraping technikai tudás mellett felelősségtudatot is igényel. Fontos tisztában lenni a tevékenység etikai és jogi vonatkozásaival, hogy elkerüld a potenciális problémákat.
Jogi keretek és korlátozások
A web scraping jogi megítélése országonként és régiónként eltérő lehet, de néhány általános alapelv mindenütt érvényes:
- Felhasználási feltételek: A legtöbb weboldal rendelkezik Terms of Service (ToS) dokumentummal, amely explicit módon tilthatja vagy korlátozhatja az automatizált adatgyűjtést. Ezek megsértése polgári jogi következményekkel járhat.
- Copyright és szellemi tulajdon: A weboldalakon található tartalmak általában szerzői jogi védelem alatt állnak. Az adatok tömeges másolása és újrafelhasználása sértheti ezeket a jogokat.
- Adatvédelmi törvények: Az EU-ban a GDPR, az USA-ban a CCPA és más adatvédelmi jogszabályok szigorúan szabályozzák a személyes adatok gyűjtését és feldolgozását. Különös óvatossággal kell eljárni, ha a scrapelt adatok személyes információkat tartalmazhatnak.
- Computer Fraud and Abuse Act (USA): Ez a törvény tiltja a számítógépes rendszerekhez való jogosulatlan hozzáférést, amit bizonyos esetekben a web scraping tevékenységekre is alkalmazhatnak.
- Robots.txt tiszteletben tartása: Ez a fájl a weboldal gyökerében található, és meghatározza, mely részeket lehet és melyeket nem lehet automatikusan indexelni vagy scrapelni.
Etikus web scraping gyakorlatok
Az alábbi irányelvek követésével minimalizálhatod a kockázatokat és etikusan végezheted a web scraping tevékenységet:
- Azonosítsd magad: Használj egyedi User-Agent fejlécet, amely tartalmazza az elérhetőségedet
- Légy tekintettel a szerver erőforrásaira:
- Korlátozd a kérések gyakoriságát (rate limiting)
- Kerüld a csúcsidőszakokat
- Csak a szükséges oldalakat töltsd le
- Kövesd a robots.txt előírásait:
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
if rp.can_fetch("YourBot", "/products"):
# Scrape the page
else:
print("Scraping not allowed for this page")
- Csak nyilvánosan elérhető adatokat gyűjts: Kerüld a bejelentkezést igénylő tartalmakat és a személyes adatokat
- Kérj engedélyt, ha lehetséges: Nagyobb projektek esetén érdemes felvenni a kapcsolatot a weboldal üzemeltetőjével
- Vizsgáld meg az API lehetőségeket: Sok weboldal biztosít hivatalos API-t az adatok lekérdezésére
„A web scraping olyan, mint a horgászat – vehetsz ki halakat a tóból, de csak annyit, amennyire szükséged van, és olyan módon, hogy az ökoszisztéma továbbra is egészséges maradjon.”
Alternatívák a web scraping helyett
Mielőtt belevágnál egy web scraping projektbe, érdemes megfontolni a lehetséges alternatívákat:
- Hivatalos API-k: Sok weboldal biztosít strukturált hozzáférést az adataihoz API-n keresztül
- Nyílt adatkészletek: Egyre több szervezet tesz közzé nyílt adatkészleteket (pl. Kaggle, kormányzati portálok)
- Adatszolgáltatók: Előfizetéses alapon működő szolgáltatások, amelyek legális módon biztosítanak hozzáférést strukturált adatokhoz
- RSS/Atom feedek: Híroldalak és blogok gyakran kínálnak automatizált tartalomszolgáltatást
- Együttműködési megállapodások: Nagyobb projektek esetén érdemes közvetlen kapcsolatot létesíteni az adattulajdonosokkal
Haladó web scraping technikák
Ha már elsajátítottad az alapokat, és szeretnéd tovább fejleszteni web scraping készségeidet, íme néhány haladó technika és megközelítés, amelyek segíthetnek összetettebb projektek megvalósításában.
Dinamikus weboldalak kezelése
A modern weboldalak jelentős része JavaScript segítségével tölti be és rendereli a tartalmat, ami kihívást jelent a hagyományos scraping technikák számára:
Headless böngészők használata:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
# Böngésző beállítása
options = Options()
options.add_argument("--headless") # Fejnélküli mód
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920,1080")
# Böngésző indítása
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
# Oldal betöltése és várakozás a dinamikus tartalom megjelenésére
driver.get("https://example.com")
driver.implicitly_wait(10) # Várakozás max. 10 másodpercig
# JavaScript futtatása az oldalon
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Tartalom kinyerése
html = driver.page_source
driver.quit()
AJAX kérések elfogása:
Sok esetben hatékonyabb közvetlenül az API-t meghívni, amelyet a weboldal is használ:
- Nyisd meg a böngésző fejlesztői eszközeit (F12)
- Navigálj a Network fülre
- Szűrj az XHR kérésekre
- Elemezd a kéréseket és válaszokat
- Reprodukáld a kéréseket a scraping scriptedben
import requests
import json
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept": "application/json",
"Referer": "https://example.com/products"
}
params = {
"category": "electronics",
"page": 1,
"limit": 50
}
response = requests.get(
"https://example.com/api/products",
headers=headers,
params=params
)
data = response.json()
products = data["products"]
Skálázható web scraping architektúrák
Nagyobb projekteknél fontos a megfelelő architektúra kialakítása:
Elosztott scraping:
- Több gép vagy konténer használata a terhelés elosztására
- Üzenetsorok (RabbitMQ, Kafka) alkalmazása a feladatok koordinálására
- Központi adattárolás (adatbázis) a kinyert adatok tárolására
Scrapy keretrendszer használata:
A Scrapy egy komplex Python keretrendszer, amely kifejezetten web scraping célokra készült:
import scrapy
class ProductSpider(scrapy.Spider):
name = "products"
start_urls = ["https://example.com/products"]
def parse(self, response):
for product in response.css(".product-item"):
yield {
"name": product.css(".product-name::text").get().strip(),
"price": product.css(".product-price::text").get().strip(),
"url": product.css("a::attr(href)").get()
}
# Következő oldal követése
next_page = response.css(".pagination .next::attr(href)").get()
if next_page:
yield response.follow(next_page, self.parse)
A Scrapy előnyei:
- Beépített támogatás a crawling-hoz
- Middleware rendszer a kérések és válaszok feldolgozásához
- Pipeline az adatok feldolgozásához és tárolásához
- Robusztus hibakezelés és újrapróbálkozási mechanizmusok
Anti-scraping technikák és megoldások
A weboldalak különböző technikákat alkalmaznak a scraping megnehezítésére:
Védelmi technika | Leírás | Lehetséges megoldás |
---|---|---|
IP-alapú korlátozás | Túl sok kérés esetén az IP cím blokkolása | Proxy rotáció, kérések időzítése |
User-Agent ellenőrzés | Nem standard User-Agent fejlécek szűrése | Valódi böngésző User-Agent használata |
CAPTCHA | Ember-robot megkülönböztetésre szolgáló teszt | CAPTCHA-megoldó szolgáltatások, manuális beavatkozás |
Honeypot csapdák | Láthatatlan linkek, amelyeket csak botok követnek | CSS elemzés, emberi böngészési minta szimulálása |
JavaScript kihívások | JS kód futtatása a kliens hitelesítéséhez | Headless böngészők, JS motorok használata |
Fingerprinting | Böngésző és eszköz egyedi azonosítása | Böngésző-ujjlenyomat randomizálása |
Proxy rotáció megvalósítása:
import requests
from random import choice
proxies_list = [
{"http": "http://proxy1.example.com:8080", "https": "https://proxy1.example.com:8080"},
{"http": "http://proxy2.example.com:8080", "https": "https://proxy2.example.com:8080"},
{"http": "http://proxy3.example.com:8080", "https": "https://proxy3.example.com:8080"},
]
for url in urls_to_scrape:
proxy = choice(proxies_list)
try:
response = requests.get(url, proxies=proxy, timeout=30)
# Feldolgozás...
except requests.exceptions.RequestException as e:
print(f"Hiba a proxy használata során: {e}")
continue
„A web scraping olyan, mint a sakk – minden lépést gondosan meg kell tervezni, figyelembe véve az ellenfél lehetséges válaszlépéseit. A siker kulcsa nem a nyers erő, hanem az intelligens stratégia és az alkalmazkodóképesség.”
Adattisztítás és -feldolgozás
A scrapelt adatok ritkán használhatók közvetlenül – általában szükség van tisztításra és feldolgozásra:
Pandas használata adattisztításhoz:
import pandas as pd
import re
# Adatok betöltése
df = pd.read_csv("raw_products.csv")
# Árak tisztítása
df["price_numeric"] = df["price"].str.replace(r"[^\d.]", "", regex=True).astype(float)
# Hiányzó értékek kezelése
df["description"] = df["description"].fillna("Nincs leírás")
# Duplikátumok eltávolítása
df = df.drop_duplicates(subset=["product_id"])
# Kategóriák normalizálása
df["category"] = df["category"].str.lower().str.strip()
# Adatok mentése
df.to_csv("cleaned_products.csv", index=False)
Természetes nyelvfeldolgozás (NLP) alkalmazása:
from nltk.sentiment import SentimentIntensityAnalyzer
import nltk
# NLTK erőforrások letöltése
nltk.download('vader_lexicon')
# Szentimentelemzés
sia = SentimentIntensityAnalyzer()
def analyze_sentiment(text):
if pd.isna(text):
return None
sentiment = sia.polarity_scores(text)
if sentiment["compound"] >= 0.05:
return "positive"
elif sentiment["compound"] <= -0.05:
return "negative"
else:
return "neutral"
# Szentimentelemzés alkalmazása a véleményekre
df["sentiment"] = df["review_text"].apply(analyze_sentiment)
A tisztított és feldolgozott adatok már alkalmasak mélyebb elemzésre, vizualizációra vagy gépi tanulási modellek betanítására.
Gyakorlati példák és esettanulmányok
A web scraping erejének megértéséhez nézzünk néhány valós példát és esettanulmányt, amelyek bemutatják, hogyan használják különböző területeken ezt a technológiát.
Ingatlanpiaci adatok elemzése
Egy ingatlanpiaci elemző cég automatizált rendszert épített, amely naponta gyűjti a legnagyobb hazai ingatlanportálok adatait:
- Adatgyűjtés: A script begyűjti az új ingatlanok adatait (ár, méret, elhelyezkedés, jellemzők)
- Tisztítás és normalizálás: Az eltérő formátumú adatok egységes szerkezetbe rendezése
- Elemzés: Ártrendek, négyzetméterárak és kereslet-kínálat viszonyok vizsgálata
- Vizualizáció: Interaktív hőtérképek és grafikonok készítése
- Előrejelzés: Gépi tanulási modellek az árváltozások előrejelzésére
Az eredmények segítségével:
- A befektetők azonosíthatják az alulértékelt ingatlanokat
- A fejlesztők meghatározhatják az optimális lokációkat új projektekhez
- A vásárlók reális képet kaphatnak az árakról és trendekről
E-commerce árfigyelő rendszer
Egy kiskereskedelmi vállalkozás árfigyelő rendszert fejlesztett versenytársai árainak követésére:
# Példakód egy egyszerű árfigyelő rendszerhez
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
import time
import smtplib
from email.mime.text import MIMEText
# Termékek és versenytársak listája
products_to_monitor = [
{"id": "A001", "name": "Okostelefon X", "our_price": 149900,
"urls": {"competitor1": "https://comp1.com/p/123", "competitor2": "https://comp2.com/p/456"}},
# További termékek...
]
def extract_price(url, selector):
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.content, "html.parser")
price_element = soup.select_one(selector)
if price_element:
# Ár kinyerése és tisztítása
price_text = price_element.text.strip()
price = int(''.join(filter(str.isdigit, price_text)))
return price
return None
# Selectors a különböző oldalakhoz
selectors = {
"competitor1": ".product-price .current-price",
"competitor2": "#price-value"
}
# Ármátrix létrehozása
price_data = []
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")
for product in products_to_monitor:
row = {"timestamp": timestamp, "product_id": product["id"],
"product_name": product["name"], "our_price": product["our_price"]}
for competitor, url in product["urls"].items():
try:
price = extract_price(url, selectors[competitor])
row[competitor] = price
# Árkülönbség számítása
if price:
difference = product["our_price"] - price
difference_percent = (difference / price) * 100
row[f"{competitor}_diff"] = difference
row[f"{competitor}_diff_percent"] = round(difference_percent, 2)
# Riasztás, ha a versenytárs ára jelentősen alacsonyabb
if difference_percent < -5:
send_alert(product, competitor, price, difference_percent)
except Exception as e:
print(f"Hiba a(z) {product['name']} termék {competitor} árának lekérdezésekor: {e}")
row[competitor] = None
price_data.append(row)
time.sleep(2) # Késleltetés a kérések között
# Adatok mentése
df = pd.DataFrame(price_data)
df.to_csv(f"price_comparison_{timestamp.replace(':', '-')}.csv", index=False)
# Riasztás küldése
def send_alert(product, competitor, price, diff_percent):
subject = f"Árfigyelmeztetés: {product['name']}"
body = f"""
A versenytárs ára jelentősen alacsonyabb!
Termék: {product['name']} (ID: {product['id']})
Saját ár: {product['our_price']} Ft
{competitor} ára: {price} Ft
Különbség: {abs(diff_percent):.2f}% (versenytárs javára)
Javasolt intézkedés: ár felülvizsgálata
"""
# Email küldési logika...
Ez a rendszer:
- Naponta többször ellenőrzi a versenytársak árait
- Azonnal riaszt, ha jelentős árkülönbséget észlel
- Historikus adatokat gyűjt az árazási stratégiák elemzéséhez
- Segít az optimális árazási döntések meghozatalában
„Az adatok önmagukban csak számok – az igazi érték abban rejlik, ahogyan ezeket az adatokat üzleti döntésekké alakítjuk. A web scraping nem a cél, hanem az eszköz a jobb döntések meghozatalához.”
Tudományos kutatás támogatása
Egy környezetvédelmi kutatócsoport a klímaváltozás hatásait vizsgálja a különböző növényfajok virágzási idejére:
- A kutatók scrapinggel gyűjtöttek adatokat:
- Időjárási portálokról (hőmérséklet, csapadék, napsütéses órák)
- Botanikai adatbázisokból (virágzási időszakok)
- Közösségi tudományos projektekből (állampolgárok megfigyelései)
- Az adatok összefűzésével és elemzésével:
- Kimutatták a virágzási időszakok eltolódását az elmúlt 20 évben
- Azonosították a legérzékenyebb növényfajokat
- Előrejelezték a jövőbeli változásokat különböző klímaszcenáriók esetén
- Az eredmények hozzájárultak:
- A biodiverzitás védelmi stratégiák kialakításához
- A mezőgazdasági tervezés optimalizálásához
- A klímaváltozás hatásainak jobb megértéséhez
Álláskeresési asszisztens
Egy fejlesztő saját használatra készített egy álláskeresési asszisztenst, amely automatikusan gyűjti és szűri az álláshirdetéseket:
# Álláskeresési asszisztens koncepciója
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
from datetime import datetime, timedelta
# Keresési paraméterek
job_title = "data scientist"
location = "Budapest"
min_salary = 700000
keywords = ["python", "machine learning", "adatelemzés", "távmunka"]
exclude_keywords = ["senior", "vezető", "5+ év tapasztalat"]
# Állásportálok és keresési URL-ek
job_sites = {
"site1": f"https://jobsite1.hu/search?q={job_title}&l={location}",
"site2": f"https://jobsite2.hu/jobs?title={job_title}&city={location}",
# További portálok...
}
all_jobs = []
# Állások gyűjtése az egyes portálokról
for site_name, url in job_sites.items():
print(f"Állások keresése: {site_name}")
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.content, "html.parser")
# Különböző portálokhoz különböző selector-ok
if site_name == "site1":
job_listings = soup.select(".job-card")
for job in job_listings:
title = job.select_one(".job-title").text.strip()
company = job.select_one(".company-name").text.strip()
link = job.select_one("a")["href"]
date_posted = job.select_one(".date-posted").text.strip()
# Részletek lekérése
job_details = get_job_details(link)
all_jobs.append({
"title": title,
"company": company,
"site": site_name,
"link": link,
"date_posted": date_posted,
"salary": job_details.get("salary", "Nem megadott"),
"description": job_details.get("description", ""),
})
# További portálok feldolgozása...
time.sleep(3) # Késleltetés a kérések között
# Állások szűrése
df = pd.DataFrame(all_jobs)
# Dátumszűrés - csak az elmúlt 7 nap
df["parsed_date"] = pd.to_datetime(df["date_posted"], format="%Y-%m-%d", errors="coerce")
week_ago = datetime.now() - timedelta(days=7)
df = df[df["parsed_date"] >= week_ago]
# Fizetés szűrése
def extract_min_salary(salary_text):
if pd.isna(salary_text):
return 0
# Fizetési tartomány kinyerése (pl. "600 000 - 800 000 Ft")
matches = re.findall(r'(\d[\d\s]*\d)', salary_text)
if matches:
# Az első szám a minimum fizetés
min_salary_str = matches[0].replace(" ", "")
return int(min_salary_str)
return 0
df["min_salary_numeric"] = df["salary"].apply(extract_min_salary)
df = df[df["min_salary_numeric"] >= min_salary]
# Kulcsszó szűrés
def contains_keywords(text, keywords, exclude_keywords):
if pd.isna(text):
return False
text = text.lower()
# Kizáró kulcsszavak ellenőrzése
for word in exclude_keywords:
if word.lower() in text:
return False
# Pozitív kulcsszavak ellenőrzése (legalább egy találat kell)
for word in keywords:
if word.lower() in text:
return True
return False
df["matches_keywords"] = df["description"].apply(
lambda x: contains_keywords(x, keywords, exclude_keywords)
)
filtered_jobs = df[df["matches_keywords"]]
# Eredmények rendezése és mentése
filtered_jobs = filtered_jobs.sort_values("parsed_date", ascending=False)
filtered_jobs.to_csv(f"matched_jobs_{datetime.now().strftime('%Y%m%d')}.csv", index=False)
print(f"Összesen {len(filtered_jobs)} megfelelő állás található.")
Ez a személyes asszisztens:
- Naponta frissíti az álláslehetőségeket több portálról
- Intelligensen szűri a hirdetéseket a megadott kritériumok alapján
- Időt takarít meg a felhasználónak a manuális kereséssel szemben
- Személyre szabott értesítéseket küld az új, releváns lehetőségekről
A web scraping így nemcsak vállalati, hanem személyes célokra is hatékonyan alkalmazható, jelentősen növelve a hatékonyságot és javítva a döntéshozatalt a mindennapi életben is.