1. 程式人生 > >PHP抓取網頁-提取網頁meta鍵值對

PHP抓取網頁-提取網頁meta鍵值對

一、前言

在使用php curl抓取網頁內容時,分析出來網頁內的meta資訊,一般情況下,只是會用到meta中的content-type或者charset、keywords、description。

二、實現

寫了一個函式,用來提出meta中的鍵值對,程式碼如下:

function getMetaOfWeb($html=NULL)
{
    if(is_null($html))
    {
        return NULL;
    }
    if(strlen($html)!=0)
    {
        $ret = array();

        $metapattern = '/<meta[^>]*?>/is';
        $kvpattern = '/([\w\-]+)=[\"\']?([^\s]+)["\']?/is';
        preg_match_all($metapattern, $html, $matches);
        if(!empty($matches))
        {
            $meta = $matches[0];
            foreach ($meta as $key => $value) {
                $value = preg_replace('/<meta\s+/is', "", $value);
                $value = rtrim($value,'/>');
                $value =trim($value);

                //替換;+空格
                $repattern = '/;\s+/is';
                $value = preg_replace($repattern, ';', $value);

                preg_match_all($kvpattern, $value, $kvmatches);
                if(!empty($kvmatches))
                {
                    $type = (int)count($kvmatches[0]);
                    switch ($type) {
                        case 1://meta裡面只有一條語句 <meta charset=UTF-8>
                            $metakey = rtrim($kvmatches[1][0],"\"'");
                            $metakey    =   ltrim($metakey,"\"'");
                            $metavalue = rtrim($kvmatches[2][0],"\"'");
                            $metavalue  =   ltrim($metavalue,"\"'");
                            $ret[$metakey]  =   $metavalue;
                            break;
                        case 2://meta裡面是引數名稱/引數值的方式
                            $metakey = rtrim($kvmatches[2][0],"\"'");
                            $metakey    =   ltrim($metakey,"\"'");
                            $metavalue = rtrim($kvmatches[2][1],"\"'");
                            $metavalue  =   ltrim($metavalue,"\"'");
                            $ret[$metakey]  =   $metavalue;
                            break;
                        case 3://meta裡面;+空格<meta http-equiv=mobile-agent content="format=wml;url=http://m.qidian.com
                            $metakey = rtrim($kvmatches[2][0],"\"'");
                            $metakey    =   ltrim($metakey,"\"'");
                            $tmp = rtrim($kvmatches[2][1],"\"'");
                            $tmp = ltrim($tmp,"\"'");
                            $tmp2 = rtrim($kvmatches[2][2],"\"'");
                            $tmp2 = ltrim($tmp2,"\"'");
                            $metavalue  =   $tmp.$tmp2;
                            $ret[$metakey]  =   $metavalue;
                            break;
                    }
                }
            }
            return $ret;
        }
        return NULL;
    }
}


相關推薦

PHP網頁-提取網頁meta

一、前言 在使用php curl抓取網頁內容時,分析出來網頁內的meta資訊,一般情況下,只是會用到meta中的content-type或者charset、keywords、description。 二、實現 寫了一個函式,用來提出meta中的鍵值對,程式碼如下: fun

php 中 使用foreach為陣列增加

php 中的 foreach 在php中,使用foreach來遍歷陣列的頻率很高,並且其效能要高於 list() 和 each() 結合來遍歷陣列: 當遍歷二位陣列的第一層陣列,並要給第二位陣列增加一個新的鍵值對時。例如我有這樣的二維陣列結構 $a =

php網頁內容,獲取網頁資料

php通過simple_html_dom實現抓取網頁內容,獲取核心網頁資料,將網頁資料寫入本地 xxx.json 檔案 其程式碼實現邏輯: 1. 引入simple_html_dom.php檔案       require_once 'simple_ht

PHP網頁執行JS phantomjs

PHP抓取網頁,網頁內容是通過JS載入的,這時需要執行JS來載入內容。 需要用到phantomjs。下面是windows的安裝方法。 1.安裝phantomjs 下載完成解壓到E:\softw

PHP網頁內容獲得網頁原始碼

1、 file_get_contents獲取 <span style="white-space:pre"> </span>$url="http://www.baidu.com/"; <span style="white-space:pre"&g

php網頁內容彙總

①、使用php獲取網頁內容 http://hi.baidu.com/quqiufeng/blog/item/7e86fb3f40b598c67d1e7150.html header("Content-type: text/html; charset=utf-8")

使用Python中的HTMLParser、cookielib和解析網頁、從HTML文件中提取連結、影象、文字、Cookies .

對搜尋引擎、檔案索引、文件轉換、資料檢索、站點備份或遷移等應用程式來說,經常用到對網頁(即HTML檔案)的解析處理。事實上,通過 Python語言提供的各種模組,我們無需藉助Web伺服器或者Web瀏覽器就能夠解析和處理HTML文件。本文上篇中,我們介紹了一個可以幫助簡化開啟

php網頁內容

function curl_file_get_contents($durl){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $durl); curl_setopt($ch, CURLOPT_TIMEOUT,

php網頁爬蟲】php網頁資料

外掛介紹: PHP Simple HTML DOM解析類:Simple HTML DOM parser 幫我們很好地解決了使用 php html 解析 問題。可以通過這個php類來解析html文件,對其中的html元素進行操作 (PHP5+以上版本)。 使用方法: 1

php圖片進行內容提取解析,文字性pdf進行內容文字提取解析

規則 服務 內容 利用 網站發布 百度 unicode 表格 返回 2018年7月7日18:52:17 php是用純算法,自己是提取圖片內容不是不行,可以但是優化起來很麻煩還得設計學習庫,去矯正數據的正確率 對於大多數項目來說,如果不是做ocr服務,就不必要做需求工具或者

網路爬蟲中FiddlerPC端網頁資料包與手機端APP資料包

1 引言   在編寫網路爬蟲時,第一步(也是極為關鍵一步)就是對網路的請求(request)和回覆(response)進行分析,尋找其中的規律,然後才能通過網路爬蟲進行模擬。瀏覽器大多也自帶有除錯工具可以進行抓包分析,但是瀏覽器自帶的工具比較輕量,複雜的抓包並不支援。且有時候需要編寫手機APP爬

網頁資料之讀取網頁資料

最近專案中需要用到各大網站的資料,這裡沒用爬蟲,用純java程式碼,無任何外掛,抓取一些自己需要的資料! 後續會記錄主要的幾個網站資料抓取,主要針對帶單個搜尋框的網站!下面是一個公用的讀取網頁資料操作

並解析網頁資料(xml解析、html解析)

網頁有兩種格式,一種是xml另一種是html,目前似乎好像大部分都是html格式的,檢視網頁格式的方法是在瀏覽器中右鍵–>檢視原始碼或者直接F12即可。 一、XML解析 1)DOM解析 DOM(Document Object Mode)是

php頁面的幾種方法詳解

close deb clas win exe _array error: fopen ini 一、 PHP抓取頁面的主要方法:1. file()函數 2. file_get_contents()函數 3. fopen()->fread()->fclose

PHP頁面的幾種方式

我們在開發網路程式時,往往需要抓取非本地檔案,一般情況下都是利用php模擬瀏覽器的訪問,通過http請求訪問url地址, 然後得到html原始碼或者xml資料,得到資料我們不能直接輸出,往往需要對內容進行提取,然後再進行格式化,

PHP頁面中a標籤的href屬性以及a中間內容

$str = file_get_contents($zh_cn_url); $reg1='/<a href=\"(.*?)\".*?>(.*?)<\/a>/i';//匹配所有A標籤 preg_match_all($reg1,$str,$aarray); //這個$a

PHP遠端圖片儲存到本地的實現方法

PHP抓取遠端圖片儲存到本地的實現方式<?php // Function: 獲取遠端圖片並把它儲存到本地 // //// 確定您有把檔案寫入本地伺服器的許可權 // //// 變數說明:// $url 是遠端圖片的完整URL地址,不能為空。// $filename 是

PHP頁面內容

什麼叫抓取?        通過PHP程式碼來實現,把其它網頁的內容抓取到本地,抓取的時候需要聯網才可以1.通過file_get_contents()函式實現抓取。        前提:在php.ini中設定允許開啟一個網路的url地址。                   

php div內容

1. 取得指定網頁內的所有圖片:測試 開新視窗複製程式碼列印? <?php    //取得指定位址的內容,並儲存至text $text=file_get_contents('http://andy.diimii.com/');     //取得所有img標籤,

java資訊提取

   protected Logger logger = LogManager.getLogger(this.getClass());     private static final String articleListBox = "lstBox",