作者ta0306556 (POIL)
看板RegExp
標題[問題] 使用正規表示法,抓取網頁資訊。
時間Thu Apr 17 09:26:42 2008
我要使用正規表示法抓取網頁資訊
以下是我要抓取的片段:
==================================================================
<td height="8">
<div name="iclickAdBody_Start" id="iclickAdBody_Start"></div>
<font color="#333333">星座:處女座<br />
學歷:輔仁大學英文系<br />
家中排行:排行老二<br />
收集品:手飾<br />
休閒嗜好:看電視<br />
最喜歡的事:表演、和朋友聊天<br />
最尊敬的人:Mother<br />
最喜歡的季節:Summer<br />
最喜歡的動物:Dog<br />
最喜歡的花:The Rose<br />
最喜歡的顏色:白色、黑色<br />
最喜歡的水果:都愛<br />
最喜歡的運動:羽球<br />
最喜歡的音樂:Hip pop、R&B<br />
最喜歡的刊物:Seventeen<br />
最喜歡的食物:水果、義大利麵、奇異果汁<br />
最討厭的食物:苦瓜</font>
==================================================================
我要抓取裡面的中文部分,我是打算先抓出來,後在用程式把<br />濾掉。
以下是我制定的正規表示法:
"/<td\s*height=\"8\">\s*<div\s*name=\"iclickAdBody\s*Start\"\s*id
=\"iclickAdBody_Start\"><\/div>\s*<font\s*color=\"#333333\">([^<]*)/"
↑
我制定到這邊最後我只會判斷讓他等於 "<" 就擷取出來。
但是我是希望他可以判斷到最後面的</font>
我想請問下各位大大,要如何制定呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.35.112
1F:→ Chris7462:是要把 HTML 語法全部清除掉嗎? 04/17 22:25
2F:→ Chris7462:是的話可以這樣 s/<[^>]*>//g 04/17 22:25
3F:→ ta0306556:擷取中間的文字並標HTML TAG 04/17 23:04
4F:→ ta0306556:並非去掉HTML TAG 04/18 00:05
5F:推 giacch:這不是Jolin嗎? 04/18 00:33
6F:→ ta0306556:被發現ㄌ!哈... 04/18 00:55
7F:→ giacch:<td [^>]+>.<div [^>]+><\/div>.<font [^>]+>(.+)<\/font> 04/18 05:10
8F:→ giacch:改成下面這個... = = 04/18 06:18
9F:→ giacch:/_Start\"><\/div>[^<]+<font [^>]+>(.+)<\/font/ 04/18 06:19
10F:→ ta0306556:可是我用你的方式,還是擷取不出來勒 04/18 22:25
11F:→ ta0306556:理論上 (.+) 應該會把所有的東西截取出來吧~ 04/18 22:25
12F:→ ta0306556:可是他就是不抓,我就是不懂 = =a 04/18 22:26
13F:→ ta0306556:而且妳這樣寫(.+)應該會所有東西都抓進來吧? 04/18 22:26
14F:→ ta0306556:會判斷停止嗎? 04/18 22:27
15F:→ giacch:再改... XDDD 04/18 23:01
16F:→ giacch:_Start\"><\/div>[^<]+<font [^>]+>(([^<]+<[^>]+>\r\n)+) 04/18 23:01
17F:→ giacch:不過不知道 (([^<]+<[^>]+>\r\n)+) 是否能順利取出東西? 04/18 23:02
18F:→ ta0306556:感謝您的熱心解說 04/18 23:25
19F:→ ta0306556:因為狗急跳牆,後來我用str_replace函 04/18 23:25
20F:→ ta0306556:式把 <\font> 轉換成為 @ 就用 ([^@]*) 抓出來了 04/18 23:26
21F:→ ta0306556:感謝妳喔! 04/18 23:27
22F:→ giacch:不用客氣~ ^^ 我只是好玩 04/18 23:32
23F:推 bcse:既然這樣的話,其實不需用到 RegExp,用 substr + strpos 就 04/22 06:12
24F:→ bcse:好了吧?理論上也會比較快! 04/22 06:13