作者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