国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP抓取網(wǎng)頁的所有超鏈接的代碼問題

2020-03-24 18:37:38
字體:
供稿:網(wǎng)友
通用HTML標(biāo)準(zhǔn)超鏈接參數(shù)取得html' target='_blank'>正則表達式測試

因為最近要做一個類似專業(yè)搜索引擎的東西,需要抓取網(wǎng)頁的所有超鏈接。
大家?guī)兔y試一下子,下面的代碼是否可以針對所有的標(biāo)準(zhǔn)超鏈接。

測試代碼如下:
?php
//--------------------------------------------------------------------------
//Filename:Noname1.php
//Description:通用鏈接參數(shù)獲取正則表達式測試
//Requirement:PHP4(http://www.php.net)
//Copyright(C),HonestQiao,2005,AllRightsReserved.
//Author:HonestQiao(honestqiao@hotmail.com)
//參數(shù)說明:
//$strSource:包含標(biāo)準(zhǔn)鏈接的HTML網(wǎng)頁
//$strResult:處理的結(jié)果
//附加說明:
//標(biāo)準(zhǔn)鏈接,使用 a /a 形勢包含的鏈接
//--------------------------------------------------------------------------
$strSource= HTML
ahref=1.htm t1 /a
ahref='2.htm' t2 /a
ahref= 3.htm t3 /a
ahref=4.htm >HTML;
preg_match_all('/ a.*?(?:|//t|//r|//n)?href=[/' ]?(.+?)[/' ]?(?:(?:|//t|//r|//n)+.*?)? (.+?) //a.*? /sim',$strSource,$strResult,PREG_PATTERN_ORDER);
for($i=0;$i count($strResult[1]);$i++)
{
printf( %dhref=(%s)title=(%s)/n ,$i,$strResult[1][$i],$strResult[2][$i]);
}
?

如果您的測試數(shù)據(jù),符合標(biāo)準(zhǔn)鏈接,但是此處沒有被處理出來,請告訴我測試數(shù)據(jù),以及你的測試環(huán)境。

謝謝。

也歡迎提供任何怪異的超鏈接,不過使用javascript來打開鏈接的除外。

[本帖最后由HonestQiao于2005-11-621:29編輯]


ydlhero 回復(fù)于:2005-11-06 17:44:26

版大很多我看不懂可否提供正則表達方法的一些資料
我知道手冊有點但那點點遠遠不夠^_^

HonestQiao 回復(fù)于:2005-11-06 18:37:41

http://www.pcre.org/

如果要深究,可以查看這里。

太深奧而其表達也太過于簡略,無法用通俗的語言去表達和解釋。

cloudchen 回復(fù)于:2005-11-06 20:27:41

匹配總是不能做到適應(yīng)任何情況的,只要能適應(yīng)一些常見的標(biāo)記方法就OK了,否則不是一個正則能搞定的,瀏覽器在分析html標(biāo)記時極其錯誤的寫法也就忽略

這個有個問題asdfhref= 1.htm 這也能獲取到不太合適把,這樣就不成獲取屬性了,得改改

HonestQiao 回復(fù)于:2005-11-06 21:18:40

引用:原帖由cloudchen于2005-11-620:27發(fā)表
匹配總是不能做到適應(yīng)任何情況的,只要能適應(yīng)一些常見的標(biāo)記方法就OK了,否則不是一個正則能搞定的,瀏覽器在分析html標(biāo)記時極其錯誤的寫法也就忽略

這個有個問題asdfhref= 1.htm 這也能獲取到不太合...



等一下子我在修改,嘿嘿。

[本帖最后由HonestQiao于2005-11-621:24編輯]

HonestQiao 回復(fù)于:2005-11-06 21:21:36

已經(jīng)修正了,作為:

preg_match_all('/ a.*?(?:|//t|//r|//n)?href=[/' ]?(.+?)[/' ]?(?:(?:|//t|//r|//n)+.*?)? (.+?) //a.*? /sim',$strSource,$strResult,PREG_PATTERN_ORDER);


[本帖最后由HonestQiao于2005-11-621:29編輯]

litie123 回復(fù)于:2005-11-06 21:57:02

ahref= so.php?id gfgfd 這個有問題 /a

笨狗 回復(fù)于:2005-11-07 08:23:00

如果不是一定要用php的話
偶推薦用perl的HTML::TokeParser
很好用D

HonestQiao 回復(fù)于:2005-11-07 08:44:23

引用:原帖由笨狗于2005-11-708:23發(fā)表
如果不是一定要用php的話
偶推薦用perl的HTML::TokeParser
很好用D


用perl很簡單,作這個。

不果現(xiàn)在用php.

HonestQiao 回復(fù)于:2005-11-07 08:45:31

引用:原帖由litie123于2005-11-621:57發(fā)表
ahref= so.php?id gfgfd 這個有問題 /a


啊,這也夠BT的啊。

langyufeng 回復(fù)于:2005-12-01 16:54:14

引用:原帖由HonestQiao于2005-11-708:45發(fā)表


啊,這也夠BT的啊。


先replace掉 就好拉

Haohappy 回復(fù)于:2005-12-01 21:43:44

供參考呵呵。

preg_match_all( ' /s*a/s.*?href/s*=/s*#find ahref=
([/ /'])?#findsingleordoublequote
(?(1)(.*?)//1|([^/s/ ]+))#ifquotefound,matchuptonextmatching
#quote,otherwisematchuptonextspace
'isx ,$document,$links);

giant35 回復(fù)于:2006-07-08 19:14:04

a.*?/s*href/s*=[/' ]?(.+?)[/' ].*? (.+?) /ahtml教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安远县| 留坝县| 乐清市| 巴青县| 灌南县| 合山市| 芜湖县| 平潭县| 江孜县| 乌鲁木齐市| 精河县| 磐石市| 武威市| 宜宾县| 夹江县| 上高县| 芜湖县| 新营市| 芒康县| 渭源县| 汝阳县| 日照市| 大宁县| 麻栗坡县| 莎车县| 德惠市| 江西省| 玉树县| 孟州市| 宝清县| 崇明县| 新营市| 云南省| 宁都县| 开化县| 华阴市| 茌平县| 小金县| 扎鲁特旗| 乳山市| 西峡县|