真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用PHP編寫爬蟲的方法

本篇內(nèi)容介紹了“使用PHP編寫爬蟲的方法”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站開發(fā)、程序開發(fā)、微網(wǎng)站、小程序定制開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。

說到爬蟲,大家的第一印象就會想到Python, 但是Python并不是所有人都會的, 那么是否可以使用其他的語言來編寫爬蟲呢? 當(dāng)然是可以的,下面介紹一下如何使用PHP編寫爬蟲。

獲取頁面html內(nèi)容

1、使用函數(shù) file_get_contents 把整個(gè)文件讀入一個(gè)字符串中。

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

這樣就可以將整個(gè)頁面的html內(nèi)容,讀入一個(gè)字符串中,然后進(jìn)行解析了

2、使用CURL進(jìn)行請求,獲取html

/**
 * [curlHtml 獲取頁面信息]
 * @param  [type] $url [網(wǎng)址]
 * @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;
}

使用Curl我們可以來進(jìn)行其他操作,如模擬瀏覽器模擬登陸等一些高級操作。

解析頁面HTML,獲取所需數(shù)據(jù)

1、正則獲取內(nèi)容

/**
 * [get_tag_data 使用正則獲取html內(nèi)容]
 * @param  [type] $html  [爬取的頁面內(nèi)容]
 * @param  [type] $tag   [要查找的標(biāo)簽]
 * @param  [type] $attr  [要查找的屬性名]
 * @param  [type] $value [屬性名對應(yīng)的值]
 * @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] : '';
    return $data;
}
$str = '馮奎博客
'; $value = get_tag_data($str, 'div', 'class', 'feng');

2、使用Xpath解析數(shù)據(jù)

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。 具體使用方法及相關(guān)介紹查看百度百科(XPath) 使用方法:

/**
 * [get_html_data 使用xpath對獲取到的html內(nèi)容進(jìn)行處理]
 * @param  [type]  $html [爬取的頁面內(nèi)容]
 * @param  [type]  $path [Xpath語句]
 * @param  integer $tag  [類型 0內(nèi)容 1標(biāo)簽內(nèi)容 自定義標(biāo)簽]
 * @param  boolean $type [單個(gè) 還是多個(gè)(默認(rèn)單個(gè)時(shí)輸出單個(gè))]
 * @return [type]        [description]
 */
function get_html_data($html,$path,$tag=1,$type=true)
{
    $dom = new \DOMDocument();
    @$dom->loadHTML("" . $html); // 從一個(gè)字符串加載HTML并設(shè)置UTF8編碼
    $dom->normalize(); // 使該HTML規(guī)范化
    $xpath = new \DOMXPath($dom); //用DOMXpath加載DOM,用于查詢
    $contents = $xpath->query($path); // 獲取所有內(nèi)容
    $data = [];
    foreach ($contents as $value) {
        if ($tag==1) {
            $data[] = $value->nodeValue; // 獲取不帶標(biāo)簽內(nèi)容
        } elseif ($tag==2) {
            $data[] = $dom->saveHtml($value);  // 獲取帶標(biāo)簽內(nèi)容
        } else {
            $data[] = $value->attributes->getNamedItem($tag)->nodeValue; // 獲取attr內(nèi)容
        }
    }
    if (count($data)==1) {
        $data = $data[0];
    }
    return $data;
}

“使用PHP編寫爬蟲的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


本文題目:使用PHP編寫爬蟲的方法
URL標(biāo)題:http://weahome.cn/article/popedg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部