Ako zostaviť základný prehľadávač webu na získavanie informácií z webu

Ako zostaviť základný prehľadávač webu na získavanie informácií z webu

Programy, ktoré čítajú informácie z webových stránok alebo webových prehľadávačov, majú všetky druhy užitočných aplikácií. Môžete oškrabať informácie o akciách, športové výsledky, textové správy z účtu Twitter alebo stiahnuť ceny z webových stránok s nákupmi.





Písanie týchto programov na indexové prehľadávanie webu je jednoduchšie, ako by ste si mohli myslieť. Python má skvelú knižnicu na písanie skriptov, ktoré extrahujú informácie z webových stránok. Pozrime sa, ako vytvoriť webový prehľadávač pomocou Scrapy.





Inštalácia Scrapy

Šrot je knižnica Pythonu, ktorá bola vytvorená na zoškrabanie webu a tvorbu webových prehľadávačov. Je rýchly, jednoduchý a dokáže sa bez veľkého úsilia pohybovať po viacerých webových stránkach.





Scrapy je k dispozícii prostredníctvom knižnice Pip Installs Python (PIP), tu je aktualizácia ako nainštalovať PIP na Windows, Mac a Linux .

Uprednostňuje sa používanie virtuálneho prostredia Python, pretože vám umožní nainštalovať aplikáciu Scrapy do virtuálneho adresára, ktorý ponechá vaše systémové súbory na pokoji. Dokumentácia Scrapy odporúča urobiť to, aby ste dosiahli najlepšie výsledky.



Vytvorte adresár a inicializujte virtuálne prostredie.

ako hrať zaradení v overatchi
mkdir crawler
cd crawler
virtualenv venv
. venv/bin/activate

Teraz môžete Scrapy nainštalovať do tohto adresára pomocou príkazu PIP.





pip install scrapy

Rýchla kontrola, či je Scrapy správne nainštalovaný

scrapy
# prints
Scrapy 1.4.0 - no active project
Usage:
scrapy [options] [args]
Available commands:
bench Run quick benchmark test
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
...

Ako vytvoriť webový prehľadávač

Teraz, keď je prostredie pripravené, môžete začať s vytváraním webového prehľadávača. Skúsme zoškrabať pár informácií zo stránky Wikipedie o batériách: https://en.wikipedia.org/wiki/Battery_(electricity) .





Prvým krokom k napísaniu prehľadávača je definovanie triedy Python, ktorá siaha od Šrot. Pavúk . Získate tak prístup ku všetkým funkciám a funkciám Scrapy. Nazvime túto triedu pavúk 1 .

Trieda pavúkov potrebuje niekoľko informácií:

  • do názov na identifikáciu pavúka
  • do start_urls premenná obsahujúca zoznam adries URL, z ktorých sa má prechádzať (príkladom v tomto návode bude adresa URL Wikipedie)
  • do analyzovať () metóda, ktorá sa používa na spracovanie webovej stránky na extrakciu informácií
import scrapy
class spider1(scrapy.Spider):
name = 'Wikipedia'
start_urls = ['https://en.wikipedia.org/wiki/Battery_(electricity)']
def parse(self, response):
pass

Rýchly test, ktorý zaistí, že všetko funguje správne.

scrapy runspider spider1.py
# prints
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapybot)
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Overridden settings: {'SPIDER_LOADER_WARN_ONLY': True}
2017-11-23 09:09:21 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats',
...

Vypínanie protokolovania

Spustenie Scrapy s touto triedou vytlačí informácie z denníka, ktoré vám práve teraz nepomôžu. Zjednodušime to odstránením týchto nadbytočných informácií z denníka. Použite a pozor príkaz pridaním kódu na začiatok súboru.

import logging
logging.getLogger('scrapy').setLevel(logging.WARNING)

Keď znova spustíte skript, informácie z denníka sa nevytlačia.

Použitie prehliadača Chrome

Všetko na webovej stránke je uložené v prvkoch HTML. Prvky sú usporiadané v objektovom modeli dokumentu (DOM). Pochopenie modelu DOM je nevyhnutné pre maximálne využitie vášho prehľadávača webu. Webový prehľadávač prehľadáva všetky prvky HTML na stránke a hľadá informácie, takže je dôležité vedieť, ako sú usporiadané.

Google Chrome má nástroje, ktoré vám pomôžu rýchlejšie nájsť prvky HTML. HTML kód pre akýkoľvek prvok, ktorý vidíte na webovej stránke, môžete nájsť pomocou inšpektora.

  • Prejdite na stránku v Chrome
  • Umiestnite myš na prvok, ktorý chcete zobraziť
  • Kliknite pravým tlačidlom myši a vyberte Skontrolovať z ponuky

Tieto kroky otvoria konzolu pre vývojárov pomocou súboru Prvky vybratá karta. V spodnej časti konzoly uvidíte strom prvkov. V tomto strome získate informácie pre svoj skript.

Extrahovanie názvu

Nechajme skript, aby za nás urobil nejakú prácu; Jednoduché prehľadávanie na získanie titulného textu webovej stránky.

Spustite skript pridaním kódu do súboru analyzovať () metóda, ktorá extrahuje názov.

...
def parse(self, response):
print response.css('h1#firstHeading::text').extract()
...

The odpoveď argument podporuje metódu s názvom CSS () ktorý vyberá prvky zo stránky pomocou vami zadaného umiestnenia.

V tomto prípade je prvok h1.firstHeading . Pridáva sa

::text

do skriptu je to, čo vám poskytne textový obsah prvku. Nakoniec, extrakt () metóda vráti vybratý prvok.

Spustením tohto skriptu v programe Scrapy sa názov vytlačí v textovej forme.

[u'Battery (electricity)']

Hľadanie popisu

Teraz, keď sme zoškrabali text názvu, urobme viac so skriptom. Prehľadávač nájde prvý odsek za nadpisom a extrahuje tieto informácie.

Tu je strom prvkov v Konzole pre vývojárov Chrome:

ako zistiť históriu vášho domu
div#mw-content-text>div>p

Šípka doprava (>) označuje vzťah rodič-dieťa medzi prvkami.

Toto miesto vráti všetky položky p prvky zhodné, čo zahŕňa celý popis. Ak chcete získať prvé p element, môžete napísať tento kód:

response.css('div#mw-content-text>div>p')[0]

Rovnako ako názov, pridáte extraktor CSS

::text

získať textový obsah prvku.

response.css('div#mw-content-text>div>p')[0].css('::text')

Konečný výraz používa extrakt () vrátiť zoznam. Môžete použiť Python pridať sa () funkcia na pripojenie sa k zoznamu po dokončení celého prehľadávania.

def parse(self, response):
print ''.join(response.css('div#mw-content-text>div>p')[0].css('::text').extract())

Výsledkom je prvý odsek textu!

An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is
...

Zhromažďovanie údajov JSON

Scrapy môže extrahovať informácie v textovej forme, čo je užitočné. Scrapy vám tiež umožňuje prezerať si údaje JavaScript Object Notation (JSON). JSON je úhľadný spôsob organizácie informácií a je široko používaný vo vývoji webových aplikácií. JSON funguje celkom dobre s Pythonom tiež.

Keď potrebujete zhromažďovať údaje ako JSON, môžete použiť výťažok vyhlásenie zabudované do programu Scrapy.

Tu je nová verzia skriptu pomocou príkazu yield. Namiesto toho, aby ste získali prvý prvok p v textovom formáte, zachytí všetky prvky p a usporiada ho vo formáte JSON.

veci, ktoré sa majú nudiť na internete
...
def parse(self, response):
for e in response.css('div#mw-content-text>div>p'):
yield { 'para' : ''.join(e.css('::text').extract()).strip() }
...

Teraz môžete spustiť pavúka zadaním výstupného súboru JSON:

scrapy runspider spider3.py -o joe.json

Skript teraz vytlačí všetky prvky p.

[
{'para': 'An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is the cathode and its negative terminal is the anode.[2] The terminal marked negative is the source of electrons that when connected to an external circuit will flow and deliver energy to an external device. When a battery is connected to an external circuit, electrolytes are able to move as ions within, allowing the chemical reactions to be completed at the separate terminals and so deliver energy to the external circuit. It is the movement of those ions within the battery which allows current to flow out of the battery to perform work.[3] Historically the term 'battery' specifically referred to a device composed of multiple cells, however the usage has evolved additionally to include devices composed of a single cell.[4]'},
{'para': 'Primary (single-use or 'disposable') batteries are used once and discarded; the electrode materials are irreversibly changed during discharge. Common examples are the alkaline battery used for flashlights and a multitude of portable electronic devices. Secondary (rechargeable) batteries can be discharged and recharged multiple
...

Škrabanie viacerých prvkov

Webový prehľadávač zatiaľ zoškrabal zo stránky názov a jeden druh prvku. Scrapy môže tiež extrahovať informácie z rôznych typov prvkov v jednom skripte.

Extrahujme najlepšie víkendové pokladnice IMDb Box Office. Tieto informácie sú čerpané z http://www.imdb.com/chart/boxoffice , v tabuľke s riadkami pre každú metriku.

The analyzovať () metóda môže z riadka extrahovať viac ako jedno pole. Pomocou nástrojov pre vývojárov prehliadača Chrome nájdete prvky vnorené do tabuľky.

...
def parse(self, response):
for e in response.css('div#boxoffice>table>tbody>tr'):
yield {
'title': ''.join(e.css('td.titleColumn>a::text').extract()).strip(),
'weekend': ''.join(e.css('td.ratingColumn')[0].css('::text').extract()).strip(),
'gross': ''.join(e.css('td.ratingColumn')[1].css('span.secondaryInfo::text').extract()).strip(),
'weeks': ''.join(e.css('td.weeksColumn::text').extract()).strip(),
'image': e.css('td.posterColumn img::attr(src)').extract_first(),
}
...

The obrázok selektor to špecifikuje obr je potomkom td.posterColumn . Ak chcete extrahovať správny atribút, použite výraz | _+_ |.

Spustenie pavúka vráti JSON:

::attr(src)

Viac webových škrabiek a robotov

Scrapy je podrobná knižnica, ktorá zvládne akékoľvek prehľadávanie webu, o ktoré ho požiadate. Pokiaľ ide o hľadanie informácií v prvkoch HTML, v kombinácii s podporou Pythonu, je ťažké ich poraziť. Bez ohľadu na to, či staviate webový prehľadávač alebo sa učíte základy zoškrabovania webu, jediným limitom je, koľko ste ochotní sa naučiť.

Ak hľadáte ďalšie spôsoby, ako vytvoriť prehľadávače alebo roboty, môžete to skúsiť stavajte roboty pre Twitter a Instagram pomocou Pythonu . Python dokáže vo vývoji webových aplikácií vytvoriť niekoľko úžasných vecí, takže pri skúmaní tohto jazyka stojí za to ísť nad rámec webových prehľadávačov.

zdieľam zdieľam Tweet E -mail 15 Príkazy príkazového riadka systému Windows (CMD), ktoré musíte vedieť

Príkazový riadok je stále výkonným nástrojom systému Windows. Tu sú najužitočnejšie príkazy CMD, ktoré potrebuje vedieť každý používateľ systému Windows.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Nástroje správcu webu
  • Programovanie
  • Python
  • Návody na kódovanie
  • Webové prehľadávače
O autorovi Anthony Grant(40 publikovaných článkov)

Anthony Grant je nezávislý autor, ktorý sa zaoberá programovaním a softvérom. Je odborníkom v oblasti informatiky, ktorý sa zaoberá programovaním, programom Excel, softvérom a technológiami.

Viac od Anthonyho Granta

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber