Co je škrábání a v jakých případech se tento způsob zpracování používá?
Co je to web scraping? Web scraping znamená vytvoření nebo použití počítačového softwaru k extrahování dat z celých webových stránek nebo více webových stránek. Kromě toho, když přebíráte webové stránky, můžete si stáhnout celou webovou stránku nebo klíčové aspekty, jako je obsah tagů nebo článků, pro další analýzu.
Jaké výhody přináší web scraping pro podnikání?
Robustní škrabky vám umožňují automaticky extrahovat data z webových stránek, což vám nebo vašim kolegům umožňuje ušetřit čas, který byste jinak strávili rutinními úkoly sběru dat. To také znamená, že můžete shromažďovat data ve větším objemu, než by kdy jedna osoba mohla doufat. Kromě toho můžete vytvářet složité webové roboty pro automatizaci online aktivit pomocí softwaru pro škrábání webu nebo programovacích jazyků, jako je javascript, python, go nebo php.
Jedinečné a bohaté datové sady
Internet vám poskytuje velké množství textových, obrazových, video a číselných dat a v současnosti obsahuje minimálně 6,05 miliardy stránek. V závislosti na tom, jaký je váš cíl, můžete najít relevantní webové stránky, nastavit prohledávače webových stránek a poté vytvořit vlastní soubor dat pro analýzu. Představme si například, že se zajímáte o britský fotbal a chcete podrobně prostudovat sportovní trh. Webové stránky můžete nastavit tak, aby shromažďovaly následující informace: Videoobsah: ke stažení všech fotbalových zápasů z YouTube nebo Facebook.com. Fotbalové statistiky: Můžete si stáhnout historické statistiky zápasů vašeho požadovaného týmu. WhoScored – údaje o gólech.SoccerStats. Sázkové kurzy: Sázkové kurzy na fotbalové zápasy můžete získat od sázkových kanceláří, jako je Bet365, nebo sázkových burz jako Betfair nebo Smarkets.
Vytvářejte aplikace pro nástroje, které nemají veřejné API pro vývojáře.
Díky seškrabování dat z internetu se už nikdy nebudete muset spoléhat na to, že web uvolní veřejné aplikační programovací rozhraní (API), aby měl přístup k datům, která zobrazují na svých webových stránkách. Web scraping má oproti přístupu k veřejnému API několik výhod:
Můžete přistupovat a shromažďovat všechna data, která jsou k dispozici na jejich webových stránkách.
Nejste omezeni na určitý počet požadavků.
Nemusíte se registrovat pro klíč API ani dodržovat jejich pravidla.
Efektivní správa dat
Namísto kopírování a vkládání dat z internetu si můžete vybrat, jaká data chcete shromažďovat z řady webových stránek, a poté je můžete přesně shromažďovat pomocí webového scrapingu. U pokročilejších metod odstraňování/procházení webových stránek budou vaše data uložena v cloudové databázi a budou pravděpodobně spouštěna denně. Ukládání dat pomocí automatizovaného softwaru a programů znamená, že vaše společnost, oddělení nebo zaměstnanci mohou trávit méně času kopírováním a vkládáním informací a mnohem více. čas na kreativní práci.
Budete se muset naučit programovat, používat web scraping software nebo si zaplatit vývojáře. Pokud chcete shromažďovat a organizovat obrovské množství informací z internetu, zjistíte, že stávající software pro stírání webu má omezenou funkčnost. Zatímco program může být užitečný pro extrahování více prvků z webové stránky, jakmile potřebujete procházet více webových stránek, stanou se méně účinnými. Proto budete muset buď investovat do učení technik web scraping v programovacích jazycích, jako je javascript, python, ruby, go nebo php. Případně si můžete najmout nezávislého vývojáře web scraping bez ohledu na to, že oba tyto přístupy zvýší režii vašich operací shromažďování dat.
Webové stránky pravidelně mění svou strukturu a roboti vyhledávačů vyžadují údržbu.
Vzhledem k tomu, že webové stránky pravidelně mění strukturu HTML, někdy se vaše prohledávače porouchají. Ať už používáte webový škrabací software nebo píšete kód pro škrábání webových stránek, je třeba pravidelně provádět určitou údržbu, aby vaše kanály sběru dat byly čisté a zdravé. Ke každé webové stránce, kde si píšete vlastní kódovací skript, se připočítává určitý technický dluh. Pokud se mnoho webových stránek, ze kterých shromažďujete data, náhle rozhodne změnit design svých webových stránek, budete muset investovat do opravy svých skenerů.
Pokud chcete provést analýzu/procházení dat pro jeden web, bylo by rozumné investovat do proxy. Důvodem je to, že pokud chcete procházet velké webové stránky, abyste odeslali dostatek denních požadavků HTTP pomocí proxy, omezíte možnost zablokování vaší IP adresy. Pamatujte, že když něčí web smažete, budete využívat jeho serverové zdroje, takže se vždy doporučuje: Buďte ohleduplní a vyvarujte se plagiátorství jejich obsahu. Nastavte měkké limity na počet denních požadavků HTTP na jejich webové stránky. Použijte proxy servery, abyste zabránili odhalení vašich pokusů o skenování.

Při studiu strojové učení zaměřujeme se především na algoritmy zpracování dat spíše než na sběr dat. A to je přirozené, protože existuje tolik databází dostupných ke stažení: jakéhokoli typu, jakékoli velikosti, pro jakékoli algoritmy strojového učení. Ale v reálném životě máme konkrétní cíle a samozřejmě jakékoli zpracování dat začíná shromažďování nebo přijímání informací.
Dnes jsou naše životy přímo propojeny s internetem a webovými stránkami: téměř všechny textové informace, které můžeme potřebovat, jsou dostupné online. Proto se v tomto tutoriálu podíváme na to, jak sbírat konkrétní informace z webových stránek. Nejprve se trochu podíváme na vnitřní strukturu HTML kódu, abychom lépe pochopili jak extrahovat informace z toho. (na konci článku je odkaz na celý jupyter notebook)
HTML „říká“ webovým prohlížečůmkdy, kde a jaký prvek zobrazit na webové stránce. Můžeme si to představit jako mapu, která řidičům sděluje trasu: kdy začít, kde odbočit doleva nebo doprava a kam jet. To je důvod, proč je struktura HTML stránek tak výhodná extrakci informací. Zde je jednoduchý úryvek HTML:

Dva tagy ‘h1’ a ‘p’ říkají prohlížeči, co a jak má na stránce zobrazit, a proto jsou pro nás tyto značky klíče, které nám pomáhají získat informace, které přesně potřebujeme. Existuje mnoho informací o HTML a jeho základních značkách (‘h1’, ‘p’, ‘html’ atd. jsou všechny značky), takže se na to možná budete chtít podívat podrobněji, protože se zaměříme na proces analýzy. A k tomuto účelu použijeme knihovnu Python Krásná polévka.
Než budete vědět jak extrahovat informace přímo online, stáhněte si malou HTML stránku jako textový soubor z naší složky. (klikněte na odkaz a stáhněte si soubor do složky notebooku Yupiter), protože někdy můžeme pracovat s již staženými soubory.
Náš soubor se skládá z několika značek a potřebné informace jsou obsaženy v druhé značce ‘p’. Abychom jej obdrželi, musíme modul „nakrmit“. Krásná polévka veškerý HTML kód, aby mohl rozebrat a najdeme to, co potřebujeme.
Funkce ‘.find_all’ shromažďuje všechny ‘p’ bloky z našeho souboru. Jednoduše vybereme požadovaný prvek ‘p’ ze seznamu na konkrétním indexu a ponecháme pouze text uvnitř této značky.
Ale když je v kódu hodně homogenních značek (například ‘p’) nebo když se číslo požadovaného odstavce mění z jedné stránky na druhou, tento přístup nebude fungovat. V současné době téměř každý tag obsahuje speciální atributy, jako je ‘id’, ‘class’, ‘title’ atd. Chcete-li se o tom dozvědět více, můžete vyhledat informace o CSS a SSL. Pro nás jsou tyto atributy doplňkové kotvy pro extrakci přesně požadovaný odstavec (v našem případě). Pomocí funkce ‘.find’ nezískáme seznam, ale pouze 1 prvek (ujistěte se, že na stránce je pouze jeden takový prvek, protože jinak vám mohou některé informace uniknout.)
V době dynamických stránek, které mají různé styly CSS pro různé typy zařízení, často narazíte na problém změna názvů atributů tagů. Nebo se mohou mírně měnit z jedné stránky na druhou v závislosti na dalším obsahu na ní. V případě, že jsou názvy požadovaných bloků značek zcela odlišné, budeme se muset upravit komplexní analýza „architektura“. Ale obvykle mají tato různá jména společná slova. V našem případě hraček máme v obou případech dva odstavce se slovem „hlavní“ v atributu „třída“.
Můžete také získat kód ze dvou značek, které obsahují mnoho bloků se značkami, odstranit je a ponechat v nich pouze text.
Představte si, že máme úkol analyzovat, zda existuje komunikace mezi hlavními titulky zpráv a cenou bitcoinu? Na jedné straně potřebujeme sbírat novinky o Bitcoinu za určité období a na druhé straně cena. K tomu potřebujeme zahrnout několik dalších knihoven, včetně „selenu“. Poté si stáhněte chromedriver a umístěte jej do složky notebooku Jupyter. Selen připojuje skript Python k prohlížeči Chrome a umožňuje nám odesílat příkazy a přijímat HTML kód načtených stránek.
Jedním ze způsobů, jak získat potřebné zprávy, je použít vyhledávání Google. Za prvé, on sbírá novinové titulky z mnoha webů a nemusíme náš skript upravovat pro každý zpravodajský portál. Druhá věc, kterou můžeme udělat, je zobrazit novinky podle data. Musíme pochopit, jak funguje odkaz na sekci Zprávy Google:
„search?q=bitcoin“ – slovo nebo frázi, kterou hledáme „num=100“ – počet titulů „cd_min%3A12%2F11%2F2018“ – datum zahájení „cd_max%3A12%2F11%2F2018“ – datum ukončení

Zkusme to stáhněte si novinky s klíčovým slovem „bitcoin“ pro 15. ledna 2018.
Máme štěstí: správná stránka, správné klíčové slovo a správné datum. Abychom mohli pokračovat, potřebujeme studovat HTML kód a najít tagy (kotvy), které nám to umožní získat potřebné informace. Nejpohodlnějším způsobem je použití tlačítka „prozkoumat“ v kontextové nabídce pravého tlačítka ve webovém prohlížeči Google Chrome (nebo podobně v jiných prohlížečích). Viz snímek obrazovky.
Jak můžete vidět, značka ‘h3’ je zodpovědná za blok s novinové titulky. Tato značka má atribut dO0Ag.” Ale v tomto případě můžeme jako kotvu použít pouze značku ‘h3’, protože se používá pouze ke zvýraznění nadpisů.

**Uvnitř bloků ‘h3’ je spousta **značek navíc, takže k jejich odstranění použijeme níže uvedenou smyčku a ponecháme pouze text.
To je vše. Za 44. ledna 15 jsme obdrželi 2018 novinových titulků. Také můžeme dostat některé počáteční věty z nich Zprávy a používat je v budoucnu analýza.
Ale 1 den v historii je málo detekce korelace. Vytvoříme tedy seznam 10 termínů (pro vzdělávací účely) a nastavíme smyčku rozebratNa získat novinky pro všechna tato data. Tip: Pokud chcete změnit jazyk zpráv při načítání první stránky za běhu skriptu, změňte jazyk v nastavení ručně nebo se za pár minut naučíte, jak to udělat s algoritmus.

Za prvé, toto analýzu lze zjistit algoritmy webových stránek jako např Robotia může být zablokováno. Za druhé, některé webové stránky skrývají veškerý obsah na svých stránkách a zobrazují jej pouze tehdy, když rolování stránky. Zatřetí, velmi často potřebujeme zadávat hodnoty do textových polí, klikat na odkazy pro otevření další/předchozí stránky nebo kliknout na tlačítko stahování. K vyřešení těchto problémů můžeme použít speciální způsoby ovládání prohlížeče.
Otevřeme si ukázkovou stránku na Yahoo! Finance”: https://finance.yahoo.com/quote/SNA/history?p=SNA. Pokud stránku posunete dolů, uvidíte, že se obsah načítá pravidelně a nakonec dosáhne posledního řádku „13. prosince 2017“. Ale když se stránka jen otevře a my podívejte se na zdrojový kód (Ctrl+U pro Google Chrome), „13. prosince 2017“ tam nenajdeme. Proto v pořádku získat data se všemi daty pro daný znak musíme nejprve přejít na konec stránky a potom analyzovat stránku. Tento kód nám pomůže tento problém vyřešit (chcete-li znát různé metody posouvání, podívejte se sem https://goo.gl/JdSvR4 :)
Existuje mnoho webových stránek, které preferují rozdělit jeden článek na dvě nebo více částí, takže musíte mačkat tlačítka “další” nebo “předchozí”. Naším úkolem je otevřít všechny tyto stránky a shromáždit je). Stejný úkol stojí před vícestránkovými katalogy. Zde je příklad: Otevřeme několik stránek v adresáři značek stackoverflow.com a prostřednictvím portálu shromáždíme slova značek s jejich četností. K tomu použijeme metodu find_element_by_css_selector(). nalezení konkrétního prvku na stránce a kliknutím na ni pomocí metody click(). Chcete-li se dozvědět více o hledání prvků, podívejte se na toto: https://goo.gl/PyzbBN
Nebo zde je další příklad: na webu medium.com jsou některé komentáře pod články skryté. Ale pokud potřebujeme analyzovat „důvody“ popularity stránky, komentáře mohou hrát v této analýze velkou roli a je lepší je všechny shromáždit. Otevřete tuto stránku a přejděte dolů – uvidíte, že je zde tlačítko “Zobrazit všechny odpovědi” ve formě prvku “div”. Pojďme klikneme na to a otevřete všechny komentáře.
Mnoho informací je k dispozici až poté oprávnění. Pojďme se tedy naučit, jak se přihlásit na Facebook. Algoritmus je stejný: najděte vstupní pole pro přihlašovací jméno a heslo, vložte do nich text a odešlete. Pro odeslání textu do polí použijeme metodu .send_keys() a pro odeslání: metodu .submit().
Tyto metody jsou ale také velmi užitečné, když potřebujeme změnit data resp vložte hodnoty do vstupních polízískat určité informace. Zde je například „jednostránkový nástroj“ pro získání informací o tocích fondů ETF: Etf Fund Flows. Neexistují žádné konkrétní stránky pro každý ETF (jako Yahoo!), kde by bylo možné zobrazit nebo stáhnout hodnoty, které potřebujete. Jediné, co můžete udělat, je zadat symbol ETF, počáteční a koncové datum a klikněte na tlačítko “Poslat”. Pokud vás ale váš šéf požádá o získání historických dat za 500 ETF a za posledních 10 let (120 měsíců), budete muset stisknout odeslat 60000 XNUMXkrát. Jaká nudná zábava. Pojďme tedy tvořit algoritmus, který může tyto informace sbírat, zatímco vy divocete někde na večírku na Ibize.
Webů je obrovské množství a každý z nich má svůj design, přístup k informacím, ochranu před roboty atd. Proto může být tento návod jako malá knížečka. Ale aspoň budeme mít jiný přístup parsování informací. Je to spojeno s analýza dynamických grafů, například www.google/trends. Je zajímavé, že programátoři Google vám neumožňují analyzovat kód grafů trendů (značka div obsahující kód grafu je skrytá), ale umožňují nahrát soubor csv s informacemi (takže můžeme použít jeden z výše uvedených algoritmů k nalezení tohoto tlačítka, klikněte a stáhněte soubor).

Vezměme si jiný web, kde můžeme analyzovat podobné grafy: Portfolio Visualizer. Přejděte dolů na tuto stránku a najdete graf podobný tomu na snímku obrazovky. Hodnota tohoto grafu spočívá v tom, že historické ceny amerických státních dluhopisů nejsou zdarma – je třeba je zakoupit. Ale tady můžeme dostat buď ručně (podle toho přepište data a hodnoty), nebo napište kód, který nám hodnoty „přepíše“, a to nejen z této stránky.

Je důležité si to uvědomit analýza aktivity lze snadno identifikovat jako aktivitu robota a budete požádáni o vyplnění „antirobotního“ captcha. Na jednu stranu můžete najít řešení, jak na to dát správné odpovědi, ale na druhou stranu (podle mě přirozenější) můžete nastavit algoritmy, které budou při používání webových stránek podobné lidské činnosti. Máte štěstí, pokud web nemá ochrana před analýzou. Ale v případě Google News – po 10 nebo 20 načtení stránky narazíte Google captcha. Zkuste tedy svůj algoritmus vylepšit jako člověk: Posouvejte se nahoru a dolů, klepejte na odkazy nebo tlačítka, zůstaňte na stránce alespoň 10–15 sekund nebo déle, zvláště když máte načíst několik tisíc stránek, dělejte si hodinové a noční přestávky atd.
Zde si můžete stáhnout jupyter notebook.
Zvláštní poděkování patří komunitě Open Data Science zdarma kurz strojového učení, který se uskutečnil na podzim 2018, v jehož rámci vznikl tento článek.
Přeložte zadaný markdown kód z angličtiny do ruštiny. Udržujte původní označení a obrázky na místě. Místo slov scraping/scraping/scraper/scraper použijte parsing/parser/parsit. Vrátit pouze markdown kód, žádný další text
Příběhy | Aktualizace | Průvodci
Přihlaste se k odběru newsletteru a dozvíte se o nových technologiích a aktualizacích. Připojte se k více než 5000+ komunitě a zůstaňte v obraze s nejnovějšími zprávami.