有時候因為工作、自身的需求,我們都會去瀏覽不同**去獲取我們需要的資料,於是爬蟲應運而生,下面是我在開發乙個簡單爬蟲的經過與遇到的問題。
按照個人習慣,我首先程式設計客棧要寫乙個介面,理清下思路。
1、去不同**。那麼我們需要乙個url輸入框。
2、找特定關鍵字的文章。那麼我們需要乙個文章標題輸入框。
3、獲取文章鏈結。那麼我們需要乙個搜尋結果的顯示容器。
文章url抓取
文章標題
ptfvufte_url">**url
程式設計客棧panel-default">
文章url
直接上**,然後加上自己的一些樣式調整,介面就完成啦:
那麼接下來就是功能的實現了,我用php來寫,首先第一步就是獲取**的html**,獲取html**的方式也有很多,我就不一一介紹了,這裡用了curl來獲取,傳入**url就能得到html**啦:
private function get_html($url)
雖然得到了html**,但是很快你會遇到乙個問題,那就是編碼問題,這可能讓你下一步的匹配無功而返,我們這裡統一把得到的html內容轉為utf8編碼:
$coding = mb_detect_encoding($html);
if ($coding != "utf-8" || !mb_check_encwww.cppcns.comoding($html, "utf-8"))
$html = mb_convert_encoding($html, 'utf-8', 'gbk,utf-8,ascii');
得到**的html,要獲取文章的url,那麼下一步就是要匹配該網頁下的所有a標籤,需要用到正規表示式,經過多次測試,最終得到乙個比較靠譜的正規表示式,不管a標籤下結構多複雜,只要是a標籤的都不放過:(最關鍵的一步)
$pattern = '|]*>(.*)|isu';
preg_match_all($pattern, $html, $matches);
匹配的結果在$matches中,它大概是這樣的乙個多維素組:
array(2)
[1]=>
array(*)
}只要能得到這個資料,其他就完全可以操作啦,你可以遍歷這個素組,找到你想要a標籤,然後獲取a標籤相應的屬性,想怎麼操作就怎麼操作啦,下面推薦乙個類,讓你更方便操作a標籤:
$dom = new domdocument();
@$dom->loadhtml($a);//$a是上面得到的一些a標籤
$url = new domxpath($dom);
$hrefs = $url->evaluate('//a');
for ($i = 0; $i < $hrefs->length; $i++)
當然,這只是一種方式,你也可以通過正規表示式匹配你想要的資訊,把資料玩出新花樣。
得到並匹配得出你想要的結果,下一步當然就是傳回前端將他們顯示出來啦,把介面寫好,然後前端用js獲取資料,用jquery動態新增內容顯示出來:
var website_url = '你的介面位址';
$.getjson(website_url,function(data)
var string = '';
var list = data.text;
for (var j in list) }}
$('#article_url').html(string);
});上最終效果圖:
本文標題: php實現簡單爬蟲的開發
本文位址:
爬蟲指令碼 php,php實現簡單爬蟲的開發
有時候因為工作 自身的需求,我們都會去瀏覽不同 去獲取我們需要的資料,於是爬蟲應運而生,下面是我在開發乙個簡單爬蟲的經過與遇到的問題。按照個人習慣,我首先要寫乙個介面,理清下思路。1 去不同 那麼我們需要乙個url輸入框。2 找特定關鍵字的文章。那麼我們需要乙個文章標題輸入框。文章url抓取 文章標...
PHP實現最簡單爬蟲原型
最簡單的爬蟲模型應該是這樣的 給乙個初始url,爬蟲把內容扒下拉,找頁面裡的url,在以這些url為起點,開始爬。下面是乙個最簡單的php實現的爬蟲模型。當然這只爬蟲還需要進行下面的進化才可以 1 拼接更準確的url鏈結。現在的鏈結有可能是格式錯誤的。2 能夠去掉重複的url鏈結。現在的爬蟲會做非常...
PHP實現最簡單爬蟲原型
最簡單的爬蟲模型應該是這樣的 給乙個初始url,爬蟲把內容扒下拉,找頁面裡的url,在以這些url為起點,開始爬。下面是乙個最簡單的php實現的爬蟲模型。爬蟲程式 原型 bookmoth 2009 02 21 從給定的url獲取html內容 param string url return strin...