Piton

HTML elemzése Python használatával

HTML elemzése Python használatával
A HTML elemzése az egyik leggyakoribb feladat, amelyet manapság végeznek, hogy információkat gyűjtsenek a weboldalakról és különféle célokra bányásszák, például egy termék árteljesítményének megállapításához az idő múlásával, egy weboldalon található könyv áttekintéséhez és még sok máshoz. Sok olyan könyvtár létezik, mint a BeautifulSoup a Pythonban, amely annyi fájdalmas pontot von le a HTML elemzéséből, de érdemes tudni, hogy ezek a könyvtárak valójában hogyan működnek az absztrakciós réteg alatt.

Ebben a leckében ezt kívánjuk megtenni. Megtudjuk, hogyan lehet kinyerni a különböző HTML-címkék értékeit, és felülbíráljuk a modul alapértelmezett funkcionalitását, hogy hozzáadjunk néhány saját logikát. Ezt a HTMLParser osztály Pythonban html.elemző modul. Lássuk a kódot működés közben.

HTMLParser osztályt nézve

A HTML szöveg elemzéséhez a Pythonban használhatjuk HTMLParser osztályban html.elemző modul. Nézzük meg az osztály dfinícióját a HTMLParser osztály:

osztály html.elemző.HTMLParser (*, convert_charrefs = Igaz)

A convert_charrefs mezőben, ha True értékre állítja, akkor az összes karakter hivatkozás az Unicode ekvivalensé lesz konvertálva. Csak a szkript / stílus az elemek nem konvertálódnak. Most megpróbáljuk megérteni ennek az osztálynak az egyes funkcióit, hogy jobban megértsük az egyes funkciók működését.

A HTMLParser osztály alosztálya

Ebben a szakaszban osztályozzuk a HTMLParser osztályt, és megnézzük azokat a funkciókat, amelyeket a HTML-adatok osztálypéldányhoz továbbításakor hívnak meg. Írjunk egy egyszerű szkriptet, amely mindezt megteszi:

html-ből.értelmező HTMLParser importálása
osztályú LinuxHTMLParser (HTMLParser):
def hand_starttag (self, tag, attrs):
print ("Start tag felmerült:", címke)
def hand_endtag (self, tag):
print ("Végcímke felmerült:", címke)
def hand_data (én, adatok):
nyomtatás ("Data found:", data)
parser = LinuxHTMLParser ()
elemző.feed ("
"

Python HTML elemzési modul


')

Íme, amit ezzel a paranccsal kapunk vissza:

Python HTMLParser alosztály

HTMLParser funkciók

Ebben a szakaszban a HTMLParser osztály különféle funkcióival fogunk foglalkozni, és ezek mindegyikét megvizsgáljuk:

html-ből.értelmező HTMLParser importálása
html-ből.az entitások importálják a name2kódpontot
osztály LinuxHint_Parse (HTMLParser):
def hand_starttag (self, tag, attrs):
nyomtatás ("Start tag:", címke)
a vonzódásokhoz:
nyomtatás ("attr:", attr)
def hand_endtag (self, tag):
print ("Végcímke:", címke)
def hand_data (én, adatok):
nyomtatás ("Data:", adatok)
def hand_comment (én, adatok):
nyomtatás ("Megjegyzés:", adatok)
def hand_entityref (saját, név):
c = chr (név2kódpont [név])
nyomtatás ("Named ent:", c)
def hand_charref (saját, név):
ha név.startswith ('x'):
c = chr (int (név [1:], 16))
más:
c = chr (int (név))
nyomtatás ("Szám:", c)
def hand_decl (saját, adatok):
nyomtatás ("Decl:", adatok)
parser = LinuxHint_Parse ()

Különböző hívásokkal tápláljunk külön HTML-adatokat erre a példányra, és nézzük meg, hogy ezek a hívások milyen kimenetet generálnak. Kezdjük egy egyszerűvel DOCTYPE húr:

elemző.feed (''"http: // www.w3.org / TR / html4 / szigorú.dtd "> ')

Itt állunk vissza ezzel a felhívással:

DOCTYPE karakterlánc

Próbálja ki most egy képcímkét, és nézze meg, milyen adatokat von ki:

elemző.feed ('A Python logó')

Itt állunk vissza ezzel a felhívással:

HTMLParser képcímke

Ezután próbáljuk meg, hogyan viselkedik a szkriptcímke a Python-függvényekkel:

elemző.feed ('')
elemző.feed ('')
elemző.hírcsatorna ('# python color: green')

Itt állunk vissza ezzel a felhívással:

Szkriptcímke htmlparser-ben

Végül megjegyzéseket adunk át a HTMLParser szakasznak is:

elemző.feed ('"
"')

Itt állunk vissza ezzel a felhívással:

A megjegyzések elemzése

Következtetés

Ebben a leckében megvizsgáltuk, hogyan lehet elemezni a HTML-t a Python saját HTMLParser osztályának használatával, minden más könyvtár nélkül. Könnyen módosíthatjuk a kódot, hogy a HTML adatok forrását HTTP klienssé változtassuk.

További Python alapú bejegyzéseket itt olvashat.

Az egérmutató és a kurzor méretének, színének és sémájának módosítása a Windows 10 rendszeren
Az egérmutató és a kurzor a Windows 10 operációs rendszerben nagyon fontos szempont. Ez elmondható más operációs rendszerekről is, tehát valójában eze...
Ingyenes és nyílt forráskódú játékmotorok a Linux játékok fejlesztéséhez
Ez a cikk felsorolja azokat az ingyenes és nyílt forráskódú játékmotorokat, amelyek felhasználhatók 2D és 3D játékok fejlesztésére Linuxon. Számos ily...
Shadow of the Tomb Raider for Linux Tutorial
A Shadow of the Tomb Raider a Tomb Raider sorozat tizenkettedik kiegészítője - az Eidos Montreal által létrehozott akció-kaland játék franchise. A ját...