Web scraping je jednou z najlepších metód zberu údajov na zhromažďovanie údajov a vytváranie vlastných súborov údajov na ich vrchole.

Mať vysokokvalitné súbory údajov je v tejto ére rozhodovania založeného na údajoch nevyhnutné. Hoci existuje množstvo verejne dostupných množín údajov, niekedy možno budete musieť vytvoriť vlastné množiny údajov, ktoré vyhovujú vašim špecifickým potrebám. Web scraping vám umožňuje extrahovať údaje z webových stránok. Tieto údaje potom môžete použiť na vytvorenie vlastnej množiny údajov.

Prehľad metód zberu údajov

Existujú rôzne metódy zberu údajov. Zahŕňajú manuálne zadávanie údajov, rozhrania API, verejné množiny údajov a zoškrabovanie webu. Každá metóda má svoje výhody a obmedzenia.

Manuálne zadávanie údajov je časovo náročné a náchylné na ľudské chyby, najmä pri veľkom zbere údajov. Je to však užitočné pri zbere údajov v malom rozsahu a vtedy, keď údaje nie sú dostupné inými prostriedkami.

Rozhrania API umožňujú vývojárom pristupovať k údajom a získavať ich štruktúrovaným spôsobom. Často poskytujú informácie v reálnom čase alebo pravidelne aktualizované. Prístup k API však môže byť obmedzený, môže vyžadovať autentifikáciu alebo môže mať obmedzenia používania.

instagram viewer

Verejné súbory údajov pokrývajú širokú škálu tém a domén. Sú vopred zhromaždené a často prichádzajú v štruktúrovanom formáte, vďaka čomu sú ľahko dostupné. Môžu ušetriť čas a námahu, keď sa požadované údaje zhodujú s dostupnými súbormi údajov. Nemusí však vždy pokryť vaše špecifické potreby alebo byť aktuálne.

Web scraping poskytuje spôsob zhromažďovania údajov z webových stránok, ktoré neponúkajú API alebo majú obmedzený prístup. Umožňuje prispôsobenie, škálovateľnosť a možnosť zhromažďovať údaje z viacerých zdrojov. Vyžaduje si to však programátorské zručnosti, znalosť štruktúry HTML a dodržiavanie právnych a etických zásad.

Výber Web Scraping pre zber údajov

Web scraping vám umožňuje extrahovať informácie priamo z webových stránok, čím získate prístup k širokému spektru zdrojov údajov. Poskytuje vám tiež kontrolu nad tým, aké údaje sa majú extrahovať a ako ich štruktúrovať. To uľahčuje prispôsobenie procesu zoškrabovania tak, aby vyhovoval vašim špecifickým požiadavkám a extrahovalo presné informácie, ktoré potrebujete pre svoj projekt.

Identifikácia zdroja údajov

Prvým krokom pri zoškrabovaní webu je identifikácia zdroja údajov. Toto je webová stránka, ktorá obsahuje údaje, ktoré chcete zoškrabať. Pri výbere zdroja údajov sa uistite, že ste v súlade so zmluvnými podmienkami zdroja. V tomto článku sa ako zdroj údajov použije IMDb (Internet Movie Database).

Nastavenie vášho prostredia

Nastavte virtuálne prostredie. Potom spustite nasledujúci príkaz na inštaláciu požadovaných knižníc.

Žiadosti o inštaláciu pip beautifulsoup4 pandas

Budete používať žiadosti knižnice na vytváranie požiadaviek HTTP. krásna polievka4 na analýzu obsahu HTML a extrahovanie údajov z webových stránok. Nakoniec použijete pandy na manipuláciu a analýzu údajov.

Úplný zdrojový kód je dostupný v a úložisko GitHub.

Písanie skriptu na škrabanie webu

Importujte nainštalované knižnice do svojho skriptu, aby ste mohli používať funkcie, ktoré poskytujú.

importovať žiadosti
od bs4 importovať Krásna Polievka
importovať čas
importovať pandy ako pd
importovať re

The čas a re moduly sú súčasťou štandardnej knižnice Pythonu. Nevyžadujú sa preto samostatné inštalácie.

čas prispeje k oneskoreniu procesu škrabania re sa bude zaoberať regulárne výrazy.

Budeš použite krásnu polievku na zoškrabanie cieľovej webovej stránky.

Vytvorte funkciu, ktorá odošle požiadavku HTTP GET na vašu cieľovú URL. Potom by mal získať obsah odpovede a vytvoriť a Krásna Polievka objekt z obsahu HTML.

defget_soup(url, params=None, headers=None):
odozva = requests.get (url, params=params, headers=headers)
polievka = KrásnaPolievka (response.content, "html.parser")
vrátiť polievka

Ďalším krokom je extrahovanie informácií z Krásna Polievka objekt.

Ak chcete získať informácie, musíte pochopiť štruktúru cieľovej webovej stránky. To zahŕňa kontrolu HTML kódu webovej stránky. To vám pomôže identifikovať prvky a atribúty, ktoré obsahujú údaje, ktoré chcete extrahovať. Ak chcete skontrolovať svoju cieľovú webovú stránku, otvorte jej odkaz vo webovom prehliadači a prejdite na webovú stránku, ktorá obsahuje údaje, ktoré chcete zoškrabať.

Potom kliknite pravým tlačidlom myši na webovú stránku a vyberte Skontrolujte z kontextového menu. Tým sa otvoria vývojárske nástroje prehliadača.

V kóde HTML webovej stránky vyhľadajte prvky, ktoré obsahujú údaje, ktoré chcete zoškrabať. Venujte pozornosť HTML značkám, triedam a atribútom spojeným s údajmi, ktoré potrebujete. Pomocou nich vytvoríte selektory na extrahovanie údajov pomocou BeautifulSoup. Na snímke obrazovky vyššie môžete vidieť, že názov filmu je vo vnútri lister-item-header trieda. Skontrolujte každú funkciu, ktorú chcete extrahovať.

Vytvorte funkciu, ktorá bude extrahovať informácie z Krásna Polievka objekt. V tomto prípade funkcia nájde názov, hodnotenie, popis, žáner, dátum vydania, režisérov a hviezdy filmu pomocou vhodných značiek HTML a atribútov triedy.

defextrakt_filmových_údajov(film):
názov = film.nájsť("h3", trieda_="lister-item-header").Nájsť("a").text
hodnotenie = movie.find("div", trieda_="ratings-imdb-rating").silný.text
popis = movie.find("div", trieda_="obsah-položky v zozname").find_all("p")[1].text.strip()
žáner_element = film.nájsť("rozpätie", trieda_="žáner")
žáner = žáner_element.text.strip() ak žáner_prvok inakžiadne
release_date = movie.find("rozpätie", trieda_="lister-item-year text-muted unbold").text.strip()
režisérske hviezdy = movie.find("p", trieda_="text s vypnutým zvukom").find_all("a")
riaditelia = [osoba.text pre osoba v režisérske hviezdy[:-1]]
hviezdy = [osoba.text pre osoba v režisérske hviezdy[-1:]]
movie_data = {
"titul": názov,
"Hodnotenie": hodnotenie,
"popis": popis,
"žáner": žáner,
"Dátum vydania": dátum vydania,
"riaditelia": režiséri,
"hviezdy": hviezdy
}
vrátiť údaje o filme

Nakoniec vytvorte funkciu, ktorá vykoná skutočné zoškrabovanie pomocou dvoch vyššie uvedených funkcií. Bude to trvať rok a maximálny počet filmov, ktoré chcete zoškrabať.

defscrape_imdb_movies(rok, limit):
základná_url = " https://www.imdb.com/search/title"
hlavičky = {"Prijať jazyk": "en-US, en; q=0,9"}
filmy = []
štart = 1
zatiaľ čo len (filmy) < limit:
parametre = {
"dátum vydania": rok,
"triediť": "num_votes, desc",
"štart": začať
}
soup = get_soup (základná_url, params=params, headers=headers)
zoznam_filmov = soup.find_all("div", trieda_="režim položky zoznamu - pokročilý")
ak len (zoznam_filmov) == 0:
prestávka
pre film v zoznam_filmov:
movie_data = extract_movie_data (film)
movies.append (filmové_údaje)
ak len (filmy) >= limit:
prestávka
začať += 50# IMDb zobrazuje 50 filmov na stránku
čas.spánok(1) # Pridajte oneskorenie, aby ste predišli preťaženiu servera
vrátiť filmy

Potom zavolajte na def scrape_imdb_movies robiť škrabanie.

# Scrape 1000 filmov vydaných v roku 2023 (alebo toľko, koľko je k dispozícii)
filmy = scrape_imdb_movies(2023, 1000)

Teraz máte zoškrabané údaje.

Ďalším krokom je vytvorenie súboru údajov z týchto údajov.

Vytvorenie množiny údajov zo zoškrabaných údajov

Vytvorte DataFrame pomocou Pandas zo zoškrabaných údajov.

df = pd. DataFrame (filmy)

Potom vykonajte predbežné spracovanie a čistenie údajov. V takom prípade odstráňte riadky s chýbajúcimi hodnotami. Potom extrahujte rok z dátumu vydania a preveďte ho na číselný. Odstráňte nepotrebné stĺpce. Konvertovať Hodnotenie stĺpec na číselný. Nakoniec odstráňte neabecedné znaky z Názov stĺpec.

df = df.dropna()
df['Rok vydania'] = df['Dátum vydania'].str.extract(r'(\d{4})')
df['Rok vydania'] = pd.to_numeric (df['Rok vydania'],
chyby ="donútiť").astype('Int64')
df = df.drop(['Dátum vydania'], os=1)
df['Hodnotenie'] = pd.to_numeric (df['Hodnotenie'], chyby="donútiť")
df['názov'] = df['názov'].použiť(lambda x: re.sub(r'\W+', ' ', X))

Uložte údaje do súboru na neskoršie použitie vo vašom projekte.

df.to_csv("imdb_movies_dataset.csv", index=Nepravdivé)

Nakoniec vytlačte prvých päť riadkov množiny údajov, aby ste mali prehľad o tom, ako vyzerá.

df.head()

Výstup je taký, ako je znázornené na obrázku nižšie:

Teraz máte súbor údajov získaný pomocou webového zoškrabovania.

Scraping webu pomocou iných knižníc Pythonu

Beautiful Soup nie je jedinou knižnicou Pythonu, ktorú môžete použiť na zoškrabovanie webu. Sú tam aj iné knižnice. Každý má svoje výhody a obmedzenia. Preskúmajte ich, aby ste zistili, ktorý z nich najlepšie vyhovuje vášmu prípadu použitia.