phpSpider Advanced Guide: Wie verwende ich reguläre Ausdrücke, um Webinhalte zu extrahieren?

WBOY
Freigeben: 2023-07-24 20:30:01
Original
1455 Leute haben es durchsucht

phpSpider Advanced Guide: Wie verwende ich reguläre Ausdrücke, um Webinhalte zu extrahieren?

Vorwort:
Bei der Entwicklung von Webcrawlern müssen wir häufig bestimmte Inhalte aus Webseiten extrahieren. Reguläre Ausdrücke sind ein leistungsstarkes Tool, das uns dabei helfen kann, Mustervergleiche auf Webseiten durchzuführen und den erforderlichen Inhalt schnell und genau zu extrahieren. Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis dafür, wie Sie reguläre Ausdrücke zum Extrahieren von Webinhalten in PHP verwenden, und enthält Beispielcode.

1. Grundlegende Syntax regulärer Ausdrücke
Reguläre Ausdrücke sind eine Möglichkeit, Zeichenmuster zu beschreiben. Verwenden Sie reguläre Ausdrücke, um Zeichenfolgen flexibel abzugleichen, zu suchen und zu ersetzen. Im Folgenden finden Sie einige grundlegende Syntaxregeln für reguläre Ausdrücke:

  1. Zeichenübereinstimmung:
  2. .: Übereinstimmung mit jedem Zeichen
  3. []: Übereinstimmung mit jedem Zeichen in Klammern
  4. w: Übereinstimmung mit jedem Buchstaben, jeder Zahl oder jedem Unterstrich
  5. d: Übereinstimmung mit jedem Zahl
  6. s: Übereinstimmung mit einem beliebigen Leerzeichen
  7. : Übereinstimmung mit der Wortgrenze
  8. Wiederholungsübereinstimmung:
    • : Übereinstimmung mit 0 oder mehr Wiederholungen des vorherigen Zeichens
    • : Übereinstimmung mit 1 oder mehr Wiederholungen von das vorherige Zeichen
  9. ? : Entspricht 0 oder 1 Wiederholung des vorherigen Zeichens
  10. {n} : Entspricht genau n Wiederholungen des vorherigen Zeichens
  11. {n,} : Entspricht mindestens n Wiederholungen des vorherigen Zeichens
  12. {n,m}: Entspricht mindestens n-mal und höchstens m Wiederholungen des vorherigen Zeichens
  13. Escape-Zeichen:
  14. : Escape-Sonderzeichen stellen beispielsweise eine passende Punktnummer dar.

2. Verwenden Sie die Funktion preg_match Für den regulären Abgleich bietet PHP eine Reihe von Funktionen zur Verarbeitung regulärer Ausdrücke. Die am häufigsten verwendete davon ist die Funktion preg_match. Diese Funktion wird verwendet, um einen regulären String-Abgleich durchzuführen. Das Folgende ist die grundlegende Verwendung der preg_match-Funktion:

$pattern = '/正则表达式/';
$string = '要匹配的字符串';
$result = preg_match($pattern, $string, $matches);
Nach dem Login kopieren

Unter diesen ist $pattern der reguläre Ausdruck, der abgeglichen werden soll, $string ist die Zeichenfolge, die abgeglichen werden soll, $result ist der boolesche Wert des Abgleichsergebnisses und $matches ist das Array zum Speichern der übereinstimmenden Ergebnisse.

3. Beispieldemonstration

Lassen Sie uns anhand eines Beispiels veranschaulichen, wie reguläre Ausdrücke zum Extrahieren von Webinhalten verwendet werden.

Angenommen, wir möchten alle Links von der folgenden Zielwebseite extrahieren:

<html>
<body>
<a href="https://www.example.com/link1">Link 1</a>
<a href="https://www.example.com/link2">Link 2</a>
<a href="https://www.example.com/link3">Link 3</a>
</body>
</html>
Nach dem Login kopieren

Wir können den folgenden regulären Ausdruck verwenden, um alle Links abzugleichen:

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';
Nach dem Login kopieren

Anschließend können wir die Funktion preg_match_all verwenden, um alle Ergebnisse abzugleichen. Speichern Sie sie in ein zweidimensionales Array:

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';
$string = '
            
              Link 1
              Link 2
              Link 3
            
          ';
preg_match_all($pattern, $string, $matches);

var_dump($matches[1]);  // 输出所有链接
Nach dem Login kopieren

Nach der Ausführung dieses Codes erhalten wir die folgende Ausgabe:

array(3) {
  [0]=>
  string(23) "https://www.example.com/link1"
  [1]=>
  string(23) "https://www.example.com/link2"
  [2]=>
  string(23) "https://www.example.com/link3"
}
Nach dem Login kopieren

Auf diese Weise haben wir alle Links erfolgreich von der Webseite extrahiert.

4. Hinweise

Es ist zu beachten, dass Sie bei der Verwendung regulärer Ausdrücke für die Crawler-Entwicklung auf die folgenden Punkte achten sollten:

    Gierig und nicht gierig
  1. Standardmäßig ist der wiederholte Abgleich regulärer Ausdrücke gierig , so oft wie möglich zusammenpassen. Wir können ? verwenden, um gieriges Matching in nicht gieriges Matching zu ändern.
Zum Beispiel stimmt der folgende reguläre Ausdruck gierig mit der gesamten Zeichenfolge „abcdef“ überein:

$pattern = '/a.*b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'abcdef'
Nach dem Login kopieren

Wenn wir die gierige Übereinstimmung in eine nicht gierige Übereinstimmung ändern, wird nur die kürzeste Teilzeichenfolge abgeglichen:

$pattern = '/a.*?b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'ab'
Nach dem Login kopieren

    HTML Zeilenumbrüche Tags
  1. Beim Extrahieren von Webseiteninhalten stoßen Sie häufig auf Zeilenumbrüche in HTML-Tags. Um Inhalte mit Zeilenumbrüchen abzugleichen, können wir den Modifikator s zum regulären Ausdrucksmuster hinzufügen:
  2. $pattern = '/<p>(.*)</p>/s';
    $string = '<p>This is a paragraph.</p>
               <p>This is another paragraph.</p>';
    preg_match_all($pattern, $string, $matches);
    var_dump($matches[1]);  // 输出两个段落的内容
    Nach dem Login kopieren
    Zusammenfassung:

    Durch die Einführung dieses Artikels haben Sie gelernt, wie Sie reguläre Ausdrücke verwenden, um Webinhalte in der PHP-Methode zu extrahieren. Reguläre Ausdrücke sind ein sehr leistungsfähiges Werkzeug zum effizienten Extrahieren der benötigten Informationen. Ich hoffe, dieser Inhalt kann Ihnen helfen, Webcrawler besser zu entwickeln.

    Das obige ist der detaillierte Inhalt vonphpSpider Advanced Guide: Wie verwende ich reguläre Ausdrücke, um Webinhalte zu extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage