php實現簡單爬蟲的開發

2022-10-06 09:36:10 字數 1730 閱讀 1715

有時候因為工作、自身的需求,我們都會去瀏覽不同**去獲取我們需要的資料,於是爬蟲應運而生,下面是我在開發乙個簡單爬蟲的經過與遇到的問題。

按照個人習慣,我首先程式設計客棧要寫乙個介面,理清下思路。

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...