Škrábání webu

Škrábání webu pomocí Pythonu

Škrábání webu pomocí Pythonu
Web scraping je automatizovaný způsob extrakce a zpracování informací z webových stránek ve velkém množství. Data na internetových stránkách nejsou strukturovaná, což lze sbírat a strukturovat pomocí webového škrábání. Vyhledávače jako Google, Bing, Yahoo mají roboty, kteří škrábají data z internetových stránek a indexují je na svých vyhledávacích stránkách. Data lze také extrahovat pomocí API, což je pravděpodobně jeden z nejlepších způsobů, jak extrahovat data z webu. Slavné weby jako Facebook, Google, Amazon poskytují uživatelům dobře strukturovaná rozhraní API pro interakci s daty, ale tato rozhraní API neuvidíte všude.

Například pokud chcete dostávat pravidelné informace o svých oblíbených produktech se slevovými nabídkami nebo chcete automatizovat proces stahování epizod své oblíbené sezóny jednu po druhé a web pro ni nemá žádné API, pak je jedinou volbou zbylo vám jen škrábání webu.Skartování webu může být na některých webech nezákonné, v závislosti na tom, zda to web umožňuje nebo ne. Webové stránky používají „roboty“.Soubor txt ”, který explicitně definuje adresy URL, které nelze smazat. Připojením „robotů“ můžete zkontrolovat, zda to web umožňuje nebo ne.txt “s názvem domény webu. Například https: // www.Google.com / roboti.txt

V tomto článku budeme používat Python pro škrábání, protože je velmi snadné jej nastavit a používat. Má mnoho předdefinovaných knihoven a knihoven třetích stran, které lze použít pro scraping a organizaci dat. K načtení webové stránky použijeme dvě pythonovské knihovny „urllib“ a „BeautifulSoup“ k analýze webové stránky pro použití programovacích operací.

Jak funguje škrábání webu?

Zašleme požadavek na webovou stránku, odkud chcete data seškrábnout. Web odpoví na požadavek obsahem HTML stránky. Poté můžeme tuto webovou stránku analyzovat na BeautifulSoup k dalšímu zpracování. K načtení webové stránky použijeme v Pythonu knihovnu „urllib“.

Urllib stáhne obsah webové stránky v HTML. Na tuto webovou stránku HTML nemůžeme použít řetězcové operace pro extrakci obsahu a další zpracování. Použijeme knihovnu Python „BeautifulSoup“, která analyzuje obsah a extrahuje zajímavá data.

Škrábání článků z Linuxhintu.com

Nyní, když máme představu o tom, jak škrábání webu funguje, uděláme si nějaký postup. Pokusíme se vyškrábat názvy článků a odkazy z Linuxhint.com. Takže otevřete https: // linuxhint.com / ve vašem prohlížeči.

Nyní stiskněte CRTL + U pro zobrazení zdrojového kódu HTML webové stránky.

Zkopírujte zdrojový kód a přejděte na https: // htmlformatter.com / předtestovat kód. Po prettifying kódu, to easy to inspect the code and find interesting information.

Nyní znovu zkopírujte formátovaný kód a vložte jej do svého oblíbeného textového editoru, jako je atom, vznešený text atd. Nyní seškrábneme zajímavé informace pomocí Pythonu. Zadejte následující

// Nainstalujte si krásnou knihovnu polévek, přichází urllib
předinstalovaný v Pythonu
ubuntu @ ubuntu: ~ $ sudo pip3 install bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (výchozí, 7. října 2019, 12:56:13)
[GCC 8.3.0] na Linuxu

Další informace získáte zadáním „help“, „copyright“, „credit“ nebo „license“.

// Import urllib
>>> import urllib.žádost
// Importuje BeautifulSoup
>>> z importu bs4 BeautifulSoup
// Zadejte adresu URL, kterou chcete načíst
>>> my_url = 'https: // linuxhint.com / '
// Vyžádejte si webovou stránku URL pomocí příkazu urlopen
>>> klient = urllib.žádost.urlopen (my_url)
// Uložte webovou stránku HTML do proměnné „html_page“
>>> html_page = klient.číst()
// Po načtení webové stránky ukončete připojení URL
>>> klient.zavřít()
// analyzovat webovou stránku HTML na BeautifulSoup za účelem škrábání
>>> page_soup = BeautifulSoup (html_page, "html.analyzátor ")

Nyní se podívejme na zdrojový kód HTML, který jsme právě zkopírovali a vložili, abychom našli věci, které nás zajímají.

Vidíte, že první článek uvedený v Linuxu je nápověda.com se jmenuje „74 Bash Operators examples“, najdete ho ve zdrojovém kódu. Je uzavřen mezi tagy záhlaví a jeho kód je



class = "category-1561"> BASH programování


title = "74 příkladů operátorů Bash"> 74 operátorů Bash
Příklady


Stejný kód se opakuje znovu a znovu se změnou pouze nadpisů článků a odkazů. Následující článek obsahuje následující kód HTML



class = "category-1343"> Ubuntu
Lak


title = "Jak nastavit mezipaměť laků na Ubuntu 18.04 ">
Jak nastavit mezipaměť laku na Ubuntu 18.04


Vidíte, že všechny články včetně těchto dvou jsou uzavřeny ve stejné “

”A použijte stejnou třídu“ entry-title ”. Můžeme použít funkci „findAll“ v knihovně Beautiful Soup, abychom našli a vypsali všechny „

”S třídou“ entry-title ”. Do konzoly Pythonu zadejte následující

// Tento příkaz najde vše “

”Prvky tagů s názvem třídy
„Entry-title“. Výstup bude uložen v poli.
>>> articles = page_soup.findAll ("h2" ,
"class": "entry-title")
// Počet článků nalezených na titulní stránce Linuxhint.com
>>> len (články)
102
// Nejprve extrahováno “

”Prvek značky obsahující název článku a odkaz
>>> články [0]


title = "74 příkladů operátorů Bash">
74 Příklady operátorů Bash


// Druhý extrahován “

”Prvek značky obsahující název článku a odkaz
>>> články [1]


title = "Jak nastavit mezipaměť laků na Ubuntu 18.04 ">
Jak nastavit mezipaměť laku na Ubuntu 18.04


// Zobrazení pouze textu ve značkách HTML pomocí textové funkce
>>> články [1].text
`` Jak nastavit mezipaměť laku na Ubuntu 18.04 '

Nyní, když máme seznam všech 102 HTML “

”Prvky tagu, které obsahují odkaz na článek a název článku. Můžeme extrahovat odkazy na články i názvy. Chcete-li extrahovat odkazy z „”, Můžeme použít následující kód

// Následující kód nejprve extrahuje odkaz

prvek značky
>>> pro odkaz v článcích [0].find_all ('a', href = True):
… Tisknout (odkaz ['href'])

https: // linuxhint.com / bash_operator_examples /

Nyní můžeme napsat smyčku for, která iteruje každou „

Prvek tagu v seznamu „articles“ a extrahujte odkaz a název článku.

>>> pro i v rozsahu (0,10):
… Tisk (články [i].text)
… Pro odkaz v článcích [i].find_all ('a', href = True):
… Tisk (odkaz ['href'] + "\ n")

74 Příklady operátorů Bash
https: // linuxhint.com / bash_operator_examples /
Jak nastavit mezipaměť laku na Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: Hodinky vhodné pro Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 nejlepších levných notebooků s Linuxem k nákupu za rozpočet
https: // linuxhint.com / best_cheap_linux_laptops /
HD remasterované hry pro Linux, které nikdy neměly vydání pro Linux ..
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS aplikací pro nahrávání obrazovky pro Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Příklady operátorů Bash
https: // linuxhint.com / bash_operator_examples /
... snip ..

Podobně tyto výsledky uložíte do souboru JSON nebo CSV.

Závěr

Vaše každodenní úkoly nejsou jen správa souborů nebo provádění systémových příkazů. Úkoly související s webem, jako je automatizace stahování souborů nebo extrakce dat, můžete také automatizovat seškrábáním webu v Pythonu. Tento článek byl omezen pouze na jednoduchou extrakci dat, ale můžete provést obrovskou automatizaci úkolů pomocí „urllib“ a „BeautifulSoup“.

Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...
Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...