Webes kaparás

Webes kaparás Python használatával

Webes kaparás Python használatával
A webes kaparás automatizált módszer az információk kinyerésére és feldolgozására az internetes webhelyekről nagyon nagy mennyiségben. Az internetes weboldalakon található adatok nincsenek strukturálva, amelyeket webes kaparással lehet összegyűjteni és strukturálni. Az olyan keresőmotorokban, mint a Google, a Bing, a Yahoo vannak olyan robotok, amelyek lekaparják az adatokat az internetes webhelyekről és indexelik őket a keresési oldalakon. Az adatok API-k segítségével is kinyerhetők, ami valószínűleg az egyik legjobb módszer az adatok kinyerésére a webről. Az olyan híres webhelyek, mint a Facebook, a Google, az Amazon, jól strukturált API-kat biztosítanak a felhasználók számára az adatokkal való interakcióhoz, de ezeket az API-kat nem fogja látni mindenhol.

Például, ha rendszeresen frissítéseket szeretne kapni kedvenc termékeiről az akciós ajánlatokhoz, vagy automatizálni szeretné a kedvenc évad epizódjainak egyesével történő letöltésének folyamatát, és a webhely nem rendelkezik hozzá API-val, akkor az egyetlen választás marad a webes kaparás.A webes kaparás egyes webhelyeken illegális lehet, attól függően, hogy egy webhely lehetővé teszi-e vagy sem. A webhelyek „robotokat használnak.txt ”fájl az URL-ek kifejezett meghatározásához, amelyeket nem szabad selejtezni. A „robotok” hozzáadásával ellenőrizheti, hogy a webhely lehetővé teszi-e vagy sem.txt ”a webhely domain nevével. Például: https: // www.Google.com / robotok.txt

Ebben a cikkben a Python-t fogjuk használni a kaparáshoz, mert nagyon könnyű beállítani és használni. Számos beépített és harmadik féltől származó könyvtárakkal rendelkezik, amelyek felhasználhatók az adatok lekaparására és rendszerezésére. Két Python-könyvtárat fogunk használni: „urllib” a weboldal beolvasásához, a „BeautifulSoup” -ot pedig a weboldal elemzéséhez a programozási műveletek alkalmazásához.

Hogyan működik a webes kaparás?

Kérést küldünk a weboldalra, ahonnan az adatokat meg akarja kaparni. A weboldal a kérésre az oldal HTML-tartalmával válaszol. Ezután elemezhetjük ezt a weboldalt a BeautifulSoup-ra további feldolgozás céljából. A weboldal beolvasásához az „urllib” könyvtárat fogjuk használni a Pythonban.

Az Urllib letölti a weboldal tartalmát HTML-ben. Nem alkalmazhatunk karakterlánc műveleteket erre a HTML weboldalra a tartalom kinyerése és további feldolgozása céljából. Egy „BeautifulSoup” Python könyvtárat fogunk használni, amely elemzi a tartalmat és kivonja az érdekes adatokat.

Cikkek kaparása a Linuxhintből.com

Most, hogy van elképzelésünk a webes kaparás működéséről, végezzünk egy kis gyakorlatot. Megpróbáljuk lekaparni a cikkek címét és a linkeket a Linuxhintből.com. Tehát nyisd meg a https: // linuxhint fájlt.com / a böngészőben.

Most nyomja meg a CRTL + U gombot a weboldal HTML forráskódjának megtekintéséhez.

Másolja a forráskódot, és lépjen a https: // htmlformatter oldalra.com / a kód pontosításához. A kód pontosítása után könnyen ellenőrizhető a kód és érdekes információk találhatók benne.

Most másolja újra a formázott kódot, és illessze be kedvenc szövegszerkesztőjébe, például atom, fenséges szöveg stb. Most lekérdezzük az érdekes információkat a Python segítségével. Írja be a következőt

// Telepítsen gyönyörű leveskönyvtárat, jön az urllib
előre telepítve a Pythonba
ubuntu @ ubuntu: ~ $ sudo pip3 telepítse a bs4-et
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (alapértelmezett, 2019. október 7., 12:56:13)
[ÖET 8.3.0] a linuxon

Írja be a „help”, a „copyright”, a „credits” vagy a „license” szót további információkért.

// Urllib importálása
>>> urllib importálása.kérés
// BeautifulSoup importálása
>>> a bs4-ből a BeautifulSoup importálása
// Írja be a beolvasni kívánt URL-t
>>> my_url = 'https: // linuxhint.com / '
// Az URL weboldal kérése az urlopen paranccsal
>>> kliens = urllib.kérés.urlopen (my_url)
// Tárolja a HTML weboldalt a „html_page” változóba
>>> html_page = kliens.olvas()
// Zárja be az URL-kapcsolatot a weboldal beolvasása után
>>> kliens.Bezárás()
// a HTML weboldalt elemzi a BeautifulSoup-ra a lekaparáshoz
>>> page_soup = BeautifulSoup (html_oldal, "html.elemző")

Most nézzük meg az imént másolt és beillesztett HTML-forráskódot, hogy megtaláljuk az érdeklődésre számot tartó dolgokat.

Láthatja, hogy az első cikk a Linuxhint-en szerepel.com neve „74 Bash Operators Examples”, ezt keresse meg a forráskódban. A fejléccímkék közé van zárva, a kódja pedig



class = "category-1561"> BASH programozás


title = "74 Bash Operators példa"> 74 Bash Operators
Példák


Ugyanaz a kód ismétlődik a cikkek címeinek és linkjeinek megváltoztatásával. A következő cikk a következő HTML-kódot tartalmazza



class = "category-1343"> Ubuntu
Lakk


title = "A lakk gyorsítótárának beállítása az Ubuntu 18-on.04 ">
A lakk gyorsítótárának beállítása az Ubuntu 18-on.04


Láthatja, hogy az összes cikk, beleértve ezt a kettőt is, ugyanabba a

”Címkét, és használja ugyanazt a„ entry-title ”osztályt. Használhatjuk a „findAll” funkciót a Gyönyörű leves könyvtárban, hogy megtaláljuk és felsoroljuk az összes

”Osztályú„ nevezési cím ”. Írja be a következőket a Python-konzoljába

// Ez a parancs megtalálja az összes “

”Tag elemek, amelyek osztálya meg van nevezve
„Bejegyzés címe”. A kimenetet egy tömbben tároljuk.
>>> cikkek = oldal_leves.findAll ("h2" ,
"class": "entry-title")
// A Linuxhint címlapján található cikkek száma.com
>>> len (cikkek)
102
// Első kivonat “

”Címkeelem, amely a cikk nevét és linkjét tartalmazza
>>> cikkek [0]


title = "74 Bash Operators példa">
74 Bash operátorok


// Második kivonat “

”Címkeelem, amely a cikk nevét és linkjét tartalmazza
>>> cikkek [1]


title = "A lakk gyorsítótárának beállítása az Ubuntu 18-on.04 ">
A lakk gyorsítótárának beállítása az Ubuntu 18-on.04


// Csak szöveg megjelenítése HTML-címkékben szövegfunkcióval
>>> cikkek [1].szöveg
'A lakk gyorsítótárának beállítása az Ubuntu 18-on.04 '

Most, hogy megvan az összes 102 HTML

”Címkeelemek, amelyek cikk hivatkozást és cikk címét tartalmazzák. Kihúzhatjuk a cikkek hivatkozásait és címeit is. Linkek kibontása a”Címkékkel a következő kódot használhatjuk

// A következő kód előbb kibontja a linket

tag elemet
>>> link a cikkekben [0].find_all ('a', href = True):
… Nyomtatás (link ['href'])

https: // linuxhint.com / bash_operator_examples /

Most írhatunk egy for ciklust, amely minden „

”Tag elemet a„ articles ”listában, és bontsa ki a cikk linkjét és címét.

>>> i tartományban (0,10):
… Nyomtatás (cikkek [i].szöveg)
… Link a cikkekben [i].find_all ('a', href = True):
… Nyomtatás (link ['href'] + "\ n")

74 Bash operátorok
https: // linuxhint.com / bash_operator_examples /
A lakk gyorsítótárának beállítása az Ubuntu 18-on.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: Linux-barát Smartwatch
https: // linuxhint.com / pinetime_linux_smartwatch /
10 legjobb olcsó Linux laptop, amelyet kedvező áron vásárolhat meg
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games Linuxhoz, amelyeknek soha nem volt Linux kiadásuk ..
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS képernyőfelvevő alkalmazás Linux számára
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Bash operátorok
https: // linuxhint.com / bash_operator_examples /
... kivágás…

Hasonlóképpen, ezeket az eredményeket JSON vagy CSV fájlba menti.

Következtetés

A napi feladatok nem csak a fájlkezelés vagy a rendszerparancsok végrehajtása. Automatizálhatja az internettel kapcsolatos feladatokat, például a fájlletöltés automatizálását vagy az adatok kinyerését azáltal, hogy az internetet lekaparja a Pythonban. Ez a cikk csak az egyszerű adatkivonatra korlátozódott, de az „urllib” és a „BeautifulSoup” segítségével hatalmas feladat-automatizálást végezhet.

Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...
Unity3D bemutató
Bevezetés a Unity 3D-be Az Unity 3D egy erőteljes játékfejlesztő motor. Ez több platformon keresztül lehetővé teszi játékok, mobil, webes, asztali és ...