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í urllibpř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
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
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 '
”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 '
>>> č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 '
title = "Jak nastavit mezipaměť laků na Ubuntu 18.04 ">
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“.
>>> pro odkaz v článcích [0].find_all ('a', href = True):
… Tisknout (odkaz ['href'])
…
https: // linuxhint.com / bash_operator_examples /
… 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 ..