Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Artikel, der ausführlich erklärt, wie man einen Crawler mit PHP schreibt

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

藏色散人
藏色散人nach vorne
2021-07-17 15:44:097651Durchsuche

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/');

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;
}

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;);

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:fengkui.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen