Ein Artikel, der ausführlich erklärt, wie man einen Crawler mit PHP schreibt

藏色散人
Freigeben: 2023-04-10 11:26:01
nach vorne
7738 Leute haben es durchsucht

Apropos Crawler: Der erste Eindruck eines jeden wird Python sein, aber nicht jeder kennt Python. Können also andere Sprachen zum Schreiben von Crawlern verwendet werden? Natürlich ist es möglich, uns vorzustellen, wie man mit PHP einen Crawler schreibt.

Holen Sie sich den HTML-Inhalt der Seite

1. Verwenden Sie die Funktion file_get_contents, um die gesamte Datei in einen String einzulesen.

file_get_contents(path,include_path,context,start,max_length);
file_get_contents('https://fengkui.net/');
Nach dem Login kopieren

Auf diese Weise kann der HTML-Inhalt der gesamten Seite in einen String eingelesen und dann analysiert werden.

2. Verwenden Sie CURL, um Anfragen zu stellen und HTML zu erhalten. Mit Curl können wir andere Vorgänge ausführen, z Simuliertes Surfen Der Server simuliert die Anmeldung und einige andere erweiterte Vorgänge.

Parsen Sie den HTML-Code der Seite und rufen Sie die erforderlichen Daten ab

1. Rufen Sie den Inhalt regelmäßig ab

/**
 * [curlHtml 获取页面信息]
 * @param  [type] $url [网址]
 * @return [type]      [description]
 */
function curlHtml($url)
{
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL            => "{$url}",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING       => "",
        CURLOPT_MAXREDIRS      => 10,
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST  => "GET",
        CURLOPT_HTTPHEADER     => array(
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding: gzip, deflate, br",
            "Accept-Language: zh-CN,zh;q=0.9",
            "Cache-Control: no-cache",
            "Connection: keep-alive",
            "Pragma: no-cache",
            "Upgrade-Insecure-Requests: 1",
            "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
            "cache-control: no-cache"
        ),
    ));
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);
    if ($err) return false;
    else return $response;
}
Nach dem Login kopieren

2 Bestimmen Sie den Inhalt von XML-Dokumenten. Die Sprache eines bestimmten Standorts. Spezifische Verwendungsmethoden und entsprechende Einführungen finden Sie in der Baidu-Enzyklopädie (XPath). Verwendungsmethoden:

/**
 * [get_tag_data 使用正则获取html内容]
 * @param  [type] $html  [爬取的页面内容]
 * @param  [type] $tag   [要查找的标签]
 * @param  [type] $attr  [要查找的属性名]
 * @param  [type] $value [属性名对应的值]
 * @return [type]        [description]
 */
function get_tag_data($html,$tag,$attr,$value){
    $regex = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\/$tag>/is";
    preg_match_all($regex,$html,$matches,PREG_PATTERN_ORDER);
    $data = isset($matches[1][0]) ? $matches[1][0] : &#39;&#39;;
    return $data;
}
$str = &#39;<div class="feng">冯奎博客</div>&#39;;
$value = get_tag_data($str, &#39;div&#39;, &#39;class&#39;, &#39;feng&#39;);
Nach dem Login kopieren

Empfohlenes Lernen: „

PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonEin Artikel, der ausführlich erklärt, wie man einen Crawler mit PHP schreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:fengkui.net
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