Hogyan készítsünk alapvető webrobotot az információk webhelyről történő lekéréséhez

Hogyan készítsünk alapvető webrobotot az információk webhelyről történő lekéréséhez

Azok a programok, amelyek olvasnak információkat a weboldalakról, vagy a webrobotok, mindenféle hasznos alkalmazással rendelkeznek. Kereshet részvényinformációkat, sporteredményeket, szöveget egy Twitter -fiókból, vagy lekérheti az árakat a vásárlási webhelyekről.





Ezen internetes feltérképező programok írása egyszerűbb, mint gondolná. A Python nagyszerű könyvtárral rendelkezik olyan szkriptek írásához, amelyek információkat nyernek ki a webhelyekről. Nézzük meg, hogyan hozhat létre robotot a Scrapy segítségével.





A Scrapy telepítése

Érdes egy Python könyvtár, amelyet az internet kaparására és a webrobotok létrehozására hoztak létre. Gyors, egyszerű, és több erőfeszítés nélkül navigálhat több weboldalon.





A terápia a Pip Installs Python (PIP) könyvtárban érhető el, itt van egy frissítés hogyan kell telepíteni a PIP -t Windows, Mac és Linux rendszerekre .

A Python virtuális környezet használata előnyös, mert lehetővé teszi a Scrapy telepítését egy virtuális könyvtárba, amely egyedül hagyja a rendszerfájlokat. A Scrapy dokumentációja ezt javasolja a legjobb eredmények elérése érdekében.



Hozzon létre egy könyvtárat, és inicializálja a virtuális környezetet.

hogyan lehet táblázatot forgatni szóban
mkdir crawler
cd crawler
virtualenv venv
. venv/bin/activate

Most telepítheti a Scrapy -t ebbe a könyvtárba egy PIP paranccsal.





pip install scrapy

Gyors ellenőrzés annak biztosítására, hogy a Scrapy megfelelően legyen telepítve

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)
...

Hogyan készítsünk webrobotot

Most, hogy a környezet készen áll, elkezdheti a webrobot építését. Nézzünk meg néhány információt az akkumulátorok Wikipédia -oldaláról: https://en.wikipedia.org/wiki/Battery_(electricity) .





A bejáró írásának első lépése egy Python osztály meghatározása, amely kiterjed a Scrap.Pók . Ez hozzáférést biztosít a Scrapy összes funkciójához. Nevezzük ezt az osztályt pók 1 .

A pókosztálynak szüksége van néhány információra:

  • nak nek név a pók azonosítására
  • nak nek start_urls változó, amely tartalmazza a feltérképezni kívánt URL -ek listáját (ebben a bemutatóban a Wikipedia URL lesz a példa)
  • nak nek elemzés () módszer, amely a weboldal feldolgozására szolgál az információk kinyerésére
import scrapy
class spider1(scrapy.Spider):
name = 'Wikipedia'
start_urls = ['https://en.wikipedia.org/wiki/Battery_(electricity)']
def parse(self, response):
pass

Gyors teszt annak ellenőrzésére, hogy minden megfelelően működik -e.

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',
...

A naplózás kikapcsolása

A Running Scrapy ezzel az osztállyal olyan naplóinformációkat nyomtat, amelyek most nem segítenek. Egyszerűsítsük le a felesleges naplóadatok eltávolításával. Használj Figyelem utasítást kód hozzáadásával a fájl elejéhez.

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

Most, amikor újra futtatja a szkriptet, a naplóadatok nem nyomtatódnak ki.

A Chrome Inspector használata

Egy weboldalon minden HTML -elemben van tárolva. Az elemek a dokumentumobjektum -modellben (DOM) vannak elrendezve. A DOM megértése kritikus fontosságú ahhoz, hogy a legtöbbet hozza ki a webrobotból. A webes robot feltérképezi az összes HTML -elemet az oldalon, hogy információkat találjon, ezért fontos tudni, hogy ezek hogyan vannak elrendezve.

A Google Chrome olyan eszközökkel rendelkezik, amelyek segítenek a HTML -elemek gyorsabb megtalálásában. Az ellenőr segítségével megtalálhatja a weboldalon látható bármely elem HTML -kódját.

  • Navigáljon egy oldalra a Chrome -ban
  • Helyezze az egeret a megtekinteni kívánt elemre
  • Kattintson a jobb gombbal, és válassza ki Ellenőrizze a menüből

Ezek a lépések megnyitják a fejlesztői konzolt a Elemek lap kiválasztva. A konzol alján egy elemfát fog látni. Ez a fa az információ, amellyel szkriptjét kaphatja meg.

A cím kibontása

Vegyük a forgatókönyvet, hogy végezzen némi munkát helyettünk; Egy egyszerű feltérképezés a weboldal címszövegének megszerzéséhez.

Indítsa el a szkriptet egy kód hozzáadásával elemzés () módszer, amely kibontja a címet.

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

Az válasz argumentum az ún CSS () amely az Ön által megadott hely alapján választja ki az elemeket az oldalról.

Ebben a példában az elem az h1.elsőfej . Hozzáadás

::text

a szkript az, ami megadja az elem szöveges tartalmát. Végül a kivonat() metódus a kiválasztott elemet adja vissza.

Ennek a szkriptnek a Scrapy -ban történő futtatása a címet szöveges formában nyomtatja ki.

[u'Battery (electricity)']

A leírás megtalálása

Most, hogy lekapartuk a címszöveget, tegyünk többet a forgatókönyvvel. A feltérképező robot megkeresi az első bekezdést a cím után, és kibontja ezeket az információkat.

Íme az elemfa a Chrome Developer Console -ban:

hogyan lehet letölteni videókat az internetről
div#mw-content-text>div>p

A jobb nyíl (>) az elemek közötti szülő-gyermek kapcsolatot jelzi.

Ez a hely visszaadja az összes o elemek illeszkednek, amely tartalmazza a teljes leírást. Hogy megkapja az elsőt o elem, ezt a kódot írhatja:

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

A címhez hasonlóan hozzáadja a CSS -kivonót

::text

hogy megkapja az elem szöveges tartalmát.

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

A végső kifejezés használja kivonat() hogy visszaadja a listát. Használhatja a Python -ot csatlakozik() funkcióval csatlakozhat a listához, miután az összes feltérképezés befejeződött.

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

Az eredmény a szöveg első bekezdése!

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
...

JSON adatok gyűjtése

A Scrapy képes szöveges formában kinyerni az információkat, ami hasznos. A Scrapy lehetővé teszi az adatok JavaScript Object Notation (JSON) megtekintését is. A JSON az információk rendszerezésének ügyes módja, és széles körben használják a webfejlesztésben. A JSON nagyon szépen működik a Pythonnal is.

Ha adatokat kell gyűjtenie JSON -ként, használhatja a hozam a Scrapy -ba beépített nyilatkozat.

Íme a szkript új verziója hozamnyilatkozat használatával. Ahelyett, hogy az első p elemet szöveges formátumban kapná, ez megragadja az összes p elemet, és JSON formátumba rendezi.

hogyan kell beállítani az elalvási időzítőt a Windows 10 rendszeren
...
def parse(self, response):
for e in response.css('div#mw-content-text>div>p'):
yield { 'para' : ''.join(e.css('::text').extract()).strip() }
...

Most futtathatja a pókot egy kimeneti JSON fájl megadásával:

scrapy runspider spider3.py -o joe.json

A szkript most kinyomtatja az összes p elemet.

[
{'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
...

Több elem lekaparása

A webrobot eddig lekaparta az oldal címét és egyfajta elemét. A Scrapy információkat is kinyerhet különböző típusú elemekből egy szkriptben.

Nézzük meg az IMDb Box Office legjobb slágereit egy hétvégére. Ez az információ innen származik http://www.imdb.com/chart/boxoffice , táblázatban, ahol az egyes mutatók sorai.

Az elemzés () metódus több mezőt is kibonthat a sorból. A Chrome fejlesztői eszközök használatával megtalálhatja a táblázatba ágyazott elemeket.

...
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(),
}
...

Az kép a választó ezt határozza meg img leszármazottja td.posterColumn . A megfelelő attribútum kibontásához használja a | _+_ | kifejezést.

A pók futása visszaadja a JSON -t:

::attr(src)

További webkaparók és robotok

A Scrapy egy részletes könyvtár, amely szinte bármilyen internetes feltérképezést képes elvégezni. Amikor a HTML elemekben található információk megtalálásáról van szó, a Python támogatásával kombinálva, nehéz legyőzni. Akár internetes robotot épít, akár a webkaparás alapjait ismeri meg, az egyetlen korlát az, hogy mennyit hajlandó megtanulni.

Ha további módszereket keres robotok vagy robotok létrehozásához, próbálja meg Twitter és Instagram robotokat készíthet a Python segítségével . A Python elképesztő dolgokat tud felépíteni a webfejlesztésben, ezért érdemes túlmutatni a webbejárókon, amikor felfedezzük ezt a nyelvet.

Részvény Részvény Csipog Email 15 Windows parancssori (CMD) parancs, amit tudnia kell

A parancssor továbbra is hatékony Windows eszköz. Itt vannak a leghasznosabb CMD -parancsok, amelyeket minden Windows -felhasználónak tudnia kell.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Webmestereszközök
  • Programozás
  • Piton
  • Kódolási oktatóanyagok
  • Webrobotok
A szerzőről Anthony Grant(40 cikk megjelent)

Anthony Grant szabadúszó író, aki programozással és szoftverrel foglalkozik. Számítástechnikai szakember, aki programozásban, Excelben, szoftverekben és technológiákban játszik.

Továbbiak Anthony Grant -tól

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide