


Beispiel für die Verwendung von PHP zum Crawlen von Baidu Reading
Vorwort
In diesem Artikel wird hauptsächlich die Verwendung von PHP zum Erfassen von Baidu Reading vorgestellt. Im Folgenden gibt es nicht viel zu sagen, werfen wir einen Blick darauf.
Die Crawling-Methode ist wie folgt
Öffnen Sie zunächst die Leseseite im Browser, überprüfen Sie den Quellcode und stellen Sie fest, dass der Inhalt des Romans nicht direkt darauf geschrieben ist die Seite, das heißt Es wird gesagt, dass der Inhalt des Romans asynchron geladen wird.
Also habe ich die Entwicklertools von Chrome auf die Netzwerkspalte umgestellt, die Leseseite aktualisiert und mich auf die beiden Kategorien XHR und Skript konzentriert.
Nach einer Untersuchung wurde festgestellt, dass es eine JSONP-Anfrage unter der Kategorie „Skript“ gab, die eher wie der Inhalt eines Romans aussah. Die angeforderte Adresse war
http://www.php.cn/
Die Antwort war eine
jsonp
-Zeichenfolge, und dann stellte ich fest, dass, wenn ich das
callback=wenku7
in der Adresse entferne, ein
json
Zeichenfolge, daher ist sie beim Parsen sehr praktisch und kann direkt in ein Array in PHP konvertiert werden.
Analysieren wir die Struktur der zurückgegebenen Daten. Auf die zurückgegebene Zeichenfolge
json
folgt ein t-Attribut und ein c-Attribut Geben Sie die Bezeichnung dieses Knotens an, z. B. h2 p usw., das c-Attribut ist der Inhalt, es gibt jedoch zwei Möglichkeiten: eine ist eine Zeichenfolge, die andere ist ein Array, und jedes Element des Arrays ist ein Knoten.
Diese Art von Struktur lässt sich am besten analysieren und kann mit einer Rekursion durchgeführt werden
Der endgültige Code lautet wie folgt:
<?php class BaiduYuedu { protected $bookId; protected $bookToken; protected $cookie; protected $result; public function __construct($bookId, $bookToken, $cookie){ $this->bookId = $bookId; $this->bookToken = $bookToken; $this->cookie = $cookie; } public static function parseNode($node){ $str = ''; if(is_string($node['c'])){ $str .= $node['c']; }else if(is_array($node['c'])){ foreach($node['c'] as $d){ $str .= self::parseNode($d); } } switch($node['t']){ case 'h2': $str .= "\n\n"; break; case 'br': case 'p': case 'p': $str .= "\n"; break; case 'img': case 'span': break; case 'obj': $tmp = '(' . self::parseNode($node['data'][0]) . ')'; $str .= str_replace("\n", '', $tmp); break; default: trigger_error('Unkown type:'.$node['t'], E_USER_WARNING); break; } return $str; } public function get($page = 1){ echo "getting page {$page}...\n"; $ch = curl_init(); $url = sprintf('http://wenku.baidu.com/content/%s/?m=%s&type=json&cn=%d', $this->bookId, $this->token, $page); curl_setopt_array($ch, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HEADER => 0, CURLOPT_HTTPHEADER => array('Cookie: '. $this->cookie) )); $ret = json_decode(curl_exec($ch), true); curl_close($ch); $str = ''; if(!empty($ret)){ $str .= self::parseNode($ret); $str .= $this->get($page + 1); } return $str; } public function start(){ $this->result = $this->get(); } public function getResult(){ return $this->result; } public function saveTo($path){ if(empty($this->result)){ trigger_error('Result is empty', E_USER_ERROR); return; } file_put_contents($path, $this->result); echo "save to {$path}\n"; } } //使用示例 $yuedu = new BaiduYuedu('49422a3769eae009581becba', '8ed1dedb240b11bf0731336eff95093f', '你的百度域cookie'); $yuedu->start(); $yuedu->saveTo('result.txt');
Die ersten beiden Parameter dieser Klasse können auf der Einleitungsseite des Romans abgerufen werden. Der erste Parameter
bookId
ist
url
li
ebook
, dem zweiten Parameter
bookToken
, wird im Quellcode der Seite nach
bdjsonUrl
durchsucht, dem Einer nach dem
m
Parameter Strings sind.
Hinweis: Wenn Baidu
cookie
nicht übergeben wird oder Baidu
cookie
ungültig ist, gilt nur der kostenlose Leseteil Um den gesamten Inhalt zu erfassen, müssen Sie sicherstellen, dass
cookie
normal verwendet werden kann.
Zusammenfassung
Das Obige ist ein Beispiel für die Verwendung von PHP zum Crawlen von Baidu Reading. Weitere verwandte Inhalte finden Sie unter PHP chinesische Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet
