Heim Backend-Entwicklung Python-Tutorial Crawler-Parsing-Methode vier: PyQuery

Crawler-Parsing-Methode vier: PyQuery

Jun 05, 2019 pm 03:14 PM
python 爬虫

Viele Sprachen können crawlen, aber Crawler, die auf Python basieren, sind prägnanter und bequemer. Crawler sind auch zu einem wesentlichen Bestandteil der Python-Sprache geworden. Es gibt auch verschiedene Möglichkeiten, Crawler zu analysieren. Im vorherigen Artikel wurde Ihnen die dritte Methode zum Parsen von Crawlern vorgestellt: reguläre Ausdrücke . Heute stelle ich Ihnen eine weitere Methode vor: PyQuery.

Crawler-Parsing-Methode vier: PyQuery

PyQuery

Die PyQuery-Bibliothek ist auch eine sehr leistungsstarke und flexible Webseiten-Parsing-Bibliothek, wenn Sie über Front-End-Entwicklung verfügen Wenn Sie Erfahrung mit jQuery haben, ist PyQuery eine sehr gute Wahl für Sie. Die Syntax ist nahezu identisch mit der von jQuery, sodass Sie sich keine seltsamen Methoden mehr merken müssen.

Im Allgemeinen gibt es drei Möglichkeiten, während der Initialisierung zu übergeben: Zeichenfolge übergeben, URL übergeben, Datei übergeben.

String-Initialisierung

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

html =

<div>

    <ul>

         <li class="item-0">first item</li>

         <li class="item-1"><a href="link2.html">second item</a></li>

         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

         <li class="item-1 active"><a href="link4.html">fourth item</a></li>

         <li class="item-0"><a href="link5.html">fifth item</a></li>

     </ul>

</div>

from pyquery

import PyQuery as pq

doc = pq(html)print(doc)

print(type(doc))

print(doc(&#39;li&#39;))

Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

Crawler-Parsing-Methode vier: PyQuery

Da PyQuery schwieriger zu schreiben ist, Wir importieren den Alias, wenn er hinzugefügt wird:

1

from pyquery import PyQuery as pq

Nach dem Login kopieren

Hier können wir erkennen, dass das Dokument im obigen Code tatsächlich ein Pyquery-Objekt ist. Tatsächlich ist dies der Fall ein CSS-Selektor, daher können alle CSS-Selektorregeln direkt verwendet werden, um den gesamten Inhalt des Tags abzurufen, dann doc('.class_name'). die ID, dann doc('#id_name') ....

URL-Initialisierung

1

2

from pyquery import PyQuery as pq

doc = pq(url="http://www.baidu.com",encoding=&#39;utf-8&#39;)print(doc(&#39;head&#39;))

Nach dem Login kopieren

Dateiinitialisierung

Wir können URL-Parameter übergeben oder Dateiparameter hier in pq() , natürlich ist die Datei hier normalerweise eine HTML-Datei, zum Beispiel: pq(filename='index.html')

Basic CSS Selector

1

2

3

4

5

6

7

8

9

10

11

12

13

html = &#39;&#39;&#39;

<div id="container">

    <ul class="list">

         <li class="item-0">first item</li>

         <li class="item-1"><a href="link2.html">second item</a></li>

         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

         <li class="item-1 active"><a href="link4.html">fourth item</a></li>

         <li class="item-0"><a href="link5.html">fifth item</a></li>

     </ul>

 </div>&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

print(doc(&#39;#container .list li&#39;))

Nach dem Login kopieren

One Worauf wir hier achten müssen, ist das Dokument („#container .list li“). Die drei hier müssen nicht nebeneinander liegen, solange eine hierarchische Beziehung besteht. Das Folgende ist das häufig verwendete CSS Auswahlmethode:

Crawler-Parsing-Methode vier: PyQuery

Element suchen

Untergeordnetes Element
Kinder, finden
Code Beispiel:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

html = &#39;&#39;&#39;

<div id="container">

    <ul class="list">

         <li class="item-0">first item</li>

         <li class="item-1"><a href="link2.html">second item</a></li>

         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

         <li class="item-1 active"><a href="link4.html">fourth item</a></li>

         <li class="item-0"><a href="link5.html">fifth item</a></li>

     </ul>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

items = doc(&#39;.list&#39;)

print(type(items))

print(items)

lis = items.find(&#39;li&#39;)

print(type(lis))

print(lis)

Nach dem Login kopieren

Die laufenden Ergebnisse lauten wie folgt

Aus den Ergebnissen können wir auch ersehen, dass es sich bei dem durch Pyquery gefundenen Ergebnis tatsächlich um ein Pyquery-Objekt handelt, und Sie können mit der Suche nach items.find fortfahren ('li') im obigen Code bedeutet, alle li im ul-Tag zu finden
Natürlich kann der gleiche Effekt durch Kinder erzielt werden, und das durch die .children-Methode erhaltene Ergebnis ist auch ein Pyquery-Objekt

1

2

3

li = items.children()

print(type(li))

print(li)

Nach dem Login kopieren

. Gleichzeitig kann der CSS-Selektor

1

2

li2 = items.children(&#39;.active&#39;)

print(li2)

Nach dem Login kopieren

auch in untergeordneten Elementen Parent, Parents-Methode

verwendet werden Der Inhalt des übergeordneten Elements durch .parent. Das Beispiel ist wie folgt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

html = &#39;&#39;&#39;<div id="container">

    <ul class="list">

         <li class="item-0">first item</li>

         <li class="item-1"><a href="link2.html">second item</a></li>

         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

         <li class="item-1 active"><a href="link4.html">fourth item</a></li>

         <li class="item-0"><a href="link5.html">fifth item</a></li>

     </ul>

 </div>&#39;&#39;&#39;from pyquery import PyQuery as pq

doc = pq(html)

items = doc(&#39;.list&#39;)

container = items.parent()

print(type(container))

print(container)

Nach dem Login kopieren

Sie können den Vorfahrenknoten durch .parents finden. Der Inhalt von

In ähnlicher Weise, wenn wir durch .parents suchen, Wir können auch CSS-Selektoren hinzufügen, um den Inhalt zu filtern

Geschwisterelemente

Geschwister

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<strong>html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

items = doc(&#39;.list&#39;)

parents = items.parents()

print(type(parents))

print(parents)</strong>

Nach dem Login kopieren
Im Code .tem-0 und .active in doc(' .list .item-0.active') liegen nebeneinander, stehen also in einer zusammengeführten Beziehung, sodass nur noch eines übrig ist, das die Bedingungen erfüllt: das dritte Element Dieses Tag
Auf diese Weise können Sie es erhalten Alle Geschwister-Tags über .siblings sind hier natürlich nicht enthalten

Ebenso können Sie in .siblings() auch über den CSS-Selektor



Traverse

< filtern 🎜>

Einzelnes Element

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(&#39;.list .item-0.active&#39;)

print(li.siblings())

Nach dem Login kopieren

Die laufenden Ergebnisse sind wie folgt: Aus den Ergebnissen können wir ersehen, dass ein Generator über items() erhalten werden kann. Und jedes Element, das wir erhalten durch die for-Schleife ist immer noch ein Pyquery-Objekt.

Informationen abrufen

Attribute abrufen

pyquery object.attr(attribute name)

pyquery object.attr.attribute name

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<strong>html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

</div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(&#39;.item-0.active&#39;)

print(li)

lis = doc(&#39;li&#39;).items()

print(type(lis))for li in lis:   

print(type(li))   

print(li)</strong>

Nach dem Login kopieren
Hier können wir also auch wissen, dass wir beim Abrufen des Attributwerts direkt a.attr (Attributname) oder a.attr.attribute name

verwenden können, um den Text zu erhalten

In vielen Fällen müssen wir die im HTML-Tag enthaltenen Textinformationen abrufen. Wir können die Textinformationen über .text() abrufen

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

a = doc(&#39;.item-0.active a&#39;)

print(a)

print(a.attr(&#39;href&#39;))

print(a.attr.href)

Nach dem Login kopieren
Die Ergebnisse sind wie folgt:

Crawler-Parsing-Methode vier: PyQueryHTML abrufen

Wir können die im aktuellen Tag enthaltenen HTML-Informationen über .html() abrufen . Das Beispiel lautet wie folgt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

a = doc(&#39;.item-0.active a&#39;)

print(a)

print(a.text())

Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

DOM-Operation

addClass、removeClass
熟悉前端操作的话,通过这两个操作可以添加和删除属性

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(&#39;.item-0.active&#39;)

print(li)

li.removeClass(&#39;active&#39;)

print(li)

li.addClass(&#39;active&#39;)

print(li)

Nach dem Login kopieren

attr,css
同样的我们可以通过attr给标签添加和修改属性,
如果之前没有该属性则是添加,如果有则是修改
我们也可以通过css添加一些css属性,这个时候,标签的属性里会多一个style属性

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

html = &#39;&#39;&#39;

<div class="wrap">

    <div id="container">

        <ul class="list">

             <li class="item-0">first item</li>

             <li class="item-1"><a href="link2.html">second item</a></li>

             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

             <li class="item-1 active"><a href="link4.html">fourth item</a></li>

             <li class="item-0"><a href="link5.html">fifth item</a></li>

         </ul>

     </div>

 </div>

&#39;&#39;&#39;

from pyquery import PyQuery as pq

doc = pq(html)

li = doc(&#39;.item-0.active&#39;)

print(li)

li.attr(&#39;name&#39;, &#39;link&#39;)

print(li)

li.css(&#39;font-size&#39;, &#39;14px&#39;)

print(li)

Nach dem Login kopieren

结果如下:

Crawler-Parsing-Methode vier: PyQuery

remove
有时候我们获取文本信息的时候可能并列的会有一些其他标签干扰,这个时候通过remove就可以将无用的或者干扰的标签直接删除,从而方便操作

1

2

3

4

5

6

7

8

9

html = &#39;&#39;&#39;<div class="wrap">

    Hello, World

    <p>This is a paragraph.</p>

 </div>&#39;&#39;&#39;from pyquery import PyQuery as pq

doc = pq(html)

wrap = doc(&#39;.wrap&#39;)

print(wrap.text())

wrap.find(&#39;p&#39;).remove()

print(wrap.text())

Nach dem Login kopieren

结果如下:

Crawler-Parsing-Methode vier: PyQuery

Das obige ist der detaillierte Inhalt vonCrawler-Parsing-Methode vier: PyQuery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So öffnen Sie das XML -Format So öffnen Sie das XML -Format Apr 02, 2025 pm 09:00 PM

Verwenden Sie die meisten Texteditoren, um XML -Dateien zu öffnen. Wenn Sie eine intuitivere Baumanzeige benötigen, können Sie einen XML -Editor verwenden, z. B. Sauerstoff XML -Editor oder XMLSPY. Wenn Sie XML -Daten in einem Programm verarbeiten, müssen Sie eine Programmiersprache (wie Python) und XML -Bibliotheken (z. B. XML.etree.elementtree) verwenden, um zu analysieren.

Gibt es eine mobile App, die XML in PDF umwandeln kann? Gibt es eine mobile App, die XML in PDF umwandeln kann? Apr 02, 2025 pm 08:54 PM

Eine Anwendung, die XML direkt in PDF konvertiert, kann nicht gefunden werden, da es sich um zwei grundlegend unterschiedliche Formate handelt. XML wird zum Speichern von Daten verwendet, während PDF zur Anzeige von Dokumenten verwendet wird. Um die Transformation abzuschließen, können Sie Programmiersprachen und Bibliotheken wie Python und ReportLab verwenden, um XML -Daten zu analysieren und PDF -Dokumente zu generieren.

So ändern Sie den Kommentarinhalt in XML So ändern Sie den Kommentarinhalt in XML Apr 02, 2025 pm 06:15 PM

Für kleine XML -Dateien können Sie den Annotationsinhalt direkt durch einen Texteditor ersetzen. Für große Dateien wird empfohlen, den XML -Parser zu verwenden, um ihn zu ändern, um Effizienz und Genauigkeit zu gewährleisten. Seien Sie vorsichtig, wenn Sie XML -Kommentare löschen. Beibehalten von Kommentaren hilft das Verständnis und die Wartung von Code normalerweise. Erweiterte Tipps bieten Python -Beispielcode, um Kommentare mit XML -Parser zu ändern. Die spezifische Implementierung muss jedoch gemäß der verwendeten XML -Bibliothek angepasst werden. Achten Sie bei der Änderung von XML -Dateien auf Codierungsprobleme. Es wird empfohlen, die UTF-8-Codierung zu verwenden und das Codierungsformat anzugeben.

Benötigt die XML -Änderung eine Programmierung? Benötigt die XML -Änderung eine Programmierung? Apr 02, 2025 pm 06:51 PM

Das Ändern des XML -Inhalts erfordert die Programmierung, da die Zielknoten genau aufgefasst werden müssen, um hinzuzufügen, zu löschen, zu ändern und zu überprüfen. Die Programmiersprache verfügt über entsprechende Bibliotheken, um XML zu verarbeiten, und bietet APIs zur Durchführung sicherer, effizienter und steuerbarer Vorgänge wie Betriebsdatenbanken.

Empfohlenes XML -Formatierungswerkzeug Empfohlenes XML -Formatierungswerkzeug Apr 02, 2025 pm 09:03 PM

XML -Formatierungs -Tools können Code nach Regeln eingeben, um die Lesbarkeit und das Verständnis zu verbessern. Achten Sie bei der Auswahl eines Tools auf die Anpassungsfunktionen, den Umgang mit besonderen Umständen, die Leistung und die Benutzerfreundlichkeit. Zu den häufig verwendeten Werkzeugtypen gehören Online-Tools, IDE-Plug-Ins und Befehlszeilen-Tools.

Gibt es ein kostenloses XML -zu -PDF -Tool für Mobiltelefone? Gibt es ein kostenloses XML -zu -PDF -Tool für Mobiltelefone? Apr 02, 2025 pm 09:12 PM

Es gibt kein einfaches und direktes kostenloses XML -zu -PDF -Tool auf Mobilgeräten. Der erforderliche Datenvisualisierungsprozess beinhaltet komplexes Datenverständnis und Rendering, und die meisten sogenannten "freien" Tools auf dem Markt haben schlechte Erfahrung. Es wird empfohlen, Computer-Seiten-Tools zu verwenden oder Cloud-Dienste zu verwenden oder Apps selbst zu entwickeln, um zuverlässigere Conversion-Effekte zu erhalten.

Ist die Konversionsgeschwindigkeit beim Umwandeln von XML in PDF auf Mobiltelefon schnell? Ist die Konversionsgeschwindigkeit beim Umwandeln von XML in PDF auf Mobiltelefon schnell? Apr 02, 2025 pm 10:09 PM

Die Geschwindigkeit der mobilen XML zu PDF hängt von den folgenden Faktoren ab: der Komplexität der XML -Struktur. Konvertierungsmethode für mobile Hardware-Konfiguration (Bibliothek, Algorithmus) -Codierungsoptimierungsmethoden (effiziente Bibliotheken, Optimierung von Algorithmen, Cache-Daten und Nutzung von Multi-Threading). Insgesamt gibt es keine absolute Antwort und es muss gemäß der spezifischen Situation optimiert werden.

Wie konvertiere ich XML -Dateien in PDF auf Ihrem Telefon? Wie konvertiere ich XML -Dateien in PDF auf Ihrem Telefon? Apr 02, 2025 pm 10:12 PM

Mit einer einzigen Anwendung ist es unmöglich, XML -zu -PDF -Konvertierung direkt auf Ihrem Telefon zu vervollständigen. Es ist erforderlich, Cloud -Dienste zu verwenden, die in zwei Schritten erreicht werden können: 1. XML in PDF in der Cloud, 2. Zugriff auf die konvertierte PDF -Datei auf dem Mobiltelefon konvertieren oder herunterladen.

See all articles