Python

HTML ontleden en schrapen met Pyquery

HTML ontleden en schrapen met Pyquery
"Pyquery" is een Python-module van derden waarmee u gegevens uit "xml"- en "html" -documenten kunt ontleden en extraheren. Het is geïnspireerd op de jQuery JavaScript-bibliotheek en heeft een bijna identieke syntaxis, waardoor u veel helperfuncties en stenocode kunt gebruiken om de documentboom te ontleden en te manipuleren. Dit artikel behandelt een eenvoudige gids over Pyquery die u helpt om met de module aan de slag te gaan.

Pyquery-installatie

Gebruik de onderstaande opdracht om Pyquery in Ubuntu te installeren:

$ sudo apt install python3-pyquery

U kunt ook de nieuwste versie van Pyquery installeren vanuit de pakketbeheerder "pip" door de volgende twee opdrachten achter elkaar uit te voeren:

$ sudo apt install python3-pip
$ pip3 installeer pyquery

Om Pyquery in andere Linux-distributies te installeren, installeert u "pip3" vanuit de pakketbeheerder en voert u de tweede hierboven genoemde opdracht uit.

Een parseerbare documentstructuur maken

Voordat u gegevens uit een HTML-document kunt ontleden en extraheren, moet u een documentstructuur maken. U kunt een documentstructuur maken op basis van een eenvoudige HTML-opmaak met behulp van het onderstaande codevoorbeeld:

van pyquery importeer PyQuery als pq
document = pq("Hallo wereld !!")
print document)
afdrukken (type(document))

De eerste instructie importeert de klasse "PyQuery" uit de module "pyquery". Vervolgens wordt een nieuwe instantie van de PyQuery-klasse gemaakt. Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hallo Wereld !!

Let op de tweede regel in de uitvoer. Hier retourneert "document", dat een instantie is van de klasse "PyQuery", geen object van het tekenreekstype. U kunt snel alle methoden opvragen die beschikbaar zijn voor de instantie "document" door de volgende extra regel toe te voegen aan het bovenstaande codevoorbeeld:

van pyquery importeer PyQuery als pq
document = pq("Hallo Wereld !!")
afdrukken (help(document))

U kunt ook online door API voor PyQuery-klasse bladeren.

Om een ​​documentstructuur van een URL te maken, gebruikt u in plaats daarvan de volgende code (vervang "url" door uw eigen gewenste adres):

van pyquery importeer PyQuery als pq
document = pq(url='https://voorbeeld.com')
print document)

Gebruik de onderstaande code om een ​​documentstructuur van een lokaal HTML-bestand te maken (vervang de waarde van "bestandsnaam" volgens uw behoeften):

van pyquery importeer PyQuery als pq
document = pq(bestandsnaam='index'.html')
print document)

Nu u een documentstructuur heeft, kunt u deze gaan ontleden.

De documentenstructuur manipuleren

U kunt op verschillende manieren gegevens extraheren en documentstructuren manipuleren. Enkele van de meest voorkomende methoden worden hieronder vermeld met voorbeelden:. Raadpleeg voor alle bruikbare methoden de hier beschikbare API.

U kunt de "tekst" -methode gebruiken om tekstinhoud van een element te krijgen:

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
afdrukken (p.tekst())

U kunt een specifieke tag / element kiezen door de naam als argument op te geven aan de instantie "document". Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hallo Wereld !!

U kunt attributen van een tag krijgen door de "attr" -methode te gebruiken. Kies hiervoor een tag die u wilt ontleden ('p' in dit geval) en geef de attribuutnaam op als argument ('id' in dit geval) of gebruik puntnotatie.

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
print document)
afdrukken (p.attr("id"), p.attr.ID kaart)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hallo Wereld !!

U kunt CSS manipuleren met behulp van de "css"-methode. CSS-stijlen toevoegen aan:

of een andere tag, kunt u de volgende code gebruiken:

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
p.css("kleur": "rood")
print document)
afdrukken (p.attr("stijl"))

Vervang het gedeelte ““color”: “red”” door uw eigen aangepaste stijlen. Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen en kunt u controleren of CSS correct is toegepast:

Hallo Wereld !!


kleur rood

Als je een vooraf opgemaakte klasse hebt, kun je de methode "addClass" gebruiken om bestaande stijlen toe te passen.

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
p.addClass("mijnstijl")

U kunt uw eigen aangepaste opmaak toevoegen en toevoegen met behulp van het onderstaande codevoorbeeld:

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
p.voeg toe("

Hoi

")
p.toevoegen("

doei

")
print document)

Vervang argumenten in de methode "prepend" en "append" door uw eigen waarden. Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hoi

Hallo Wereld !!

doei

Gebruik de "lege" methode om de inhoud van een element te verwijderen.

van pyquery importeer PyQuery als pq
document = pq("

Hallo Wereld !!

")
p = document('p')
p.leeg()
print document)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

U kunt de "filter"-methode gebruiken om specifieke elementen te selecteren wanneer er meerdere tags van hetzelfde type zijn. De onderstaande code pikt bijvoorbeeld een "

” tag met een “id” als “hallo”:

van pyquery importeer PyQuery als pq
document = pq("

Hallo

Wereld !!

")
p = document('p')
afdrukken (p.filter("#hallo"))

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hallo

U kunt meerdere tags / elementen tegelijk vinden met behulp van de "vind" -methode:

van pyquery importeer PyQuery als pq
document = pq("

Hallo

Wereld !!

")
print document.vind('p'))

Geef de tag / elementnaam op als argument voor de "find" -methode. Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

Hallo

Wereld !!

U kunt schakelen tussen "xml"- en "html"-parsers met een extra "parser" -argument:

van pyquery importeer PyQuery als pq
document = pq("

Hallo

Wereld !!

", parser="html")
print document)

Als je meer hulp nodig hebt met Pyquery, raadpleeg dan de officiële documentatie en voorbeelden die hier beschikbaar zijn.

Conclusie

Met PyQuery kunt u snel html-documenten ontleden door minimale code te schrijven, omdat het tal van helperfuncties bevat die het schrijven van aangepaste code volledig weglaten. De "jQuery"-achtige syntaxis en structuur helpt ook bij het selecteren van elementen en knooppunten zonder dieper in de documentboom te gaan, vooral wanneer er veel geneste opmaak is.

Met WinMouse kunt u de beweging van de muisaanwijzer op Windows-pc aanpassen en verbeteren
Als u de standaardfuncties van uw muisaanwijzer wilt verbeteren, gebruik dan freeware WinMuis. Het voegt meer functies toe om u te helpen het meeste u...
Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...