用正则表达式采集网页上的图片信息
1 具体步骤 ①使用file_get_contents()函数获取url的内容。 ②浏览要采集的网页的源代码,找出要提取元素的物理位置。一定要仔细分析,找准位置。 ③写正则表达式,将要匹配的img元素的src部分给提取出来。正则表达式的准确性我个人感觉是最最重要的。 ④使用preg_match_all()函数,其中要写上参数$matches,从它里面我们可以拿图片的地址(src)。关于这个函数的使用,一定要熟悉。 ⑤我们提取的知识图片的链接地址,若要向在网页上显示图片的话,还需要给这个地址套上一个<img src="">的标签,再使用echo()函数输出即可。好了,大功告成。 下面是我自己写的一个采集携程网的例子。 $url= "http://hotels.ctrip.com/hotel/guangzhou32/star3"; $fcontent= file_get_contents( $url); $pattern="/<imgsname="hotelpic"(.*)src="http://pic.c-ctrip.com/common/pic_alpha.gif"s_src="(.*)"><im/"; preg_match_all ( $pattern,$fcontent,$matches); foreach($matches[2] as$val){ echo"<img src="$val">"; } 2 preg_match_all()函数的使用 具体的情况可以查看php手册,这里我主要讲一下$matches之后的那个参数。 PREG_SET_ORDER选项: 1 将$matches成为一个2维数组, [0]关于第一次匹配上的记录信息,$matches[0][0]为匹配的全部字符串,然后才是$matches[0][1]、$matches[0][2]、$matches[0][3]一次分别为各部分匹配的子记录 [1]就是第二次匹配上的记录信息,$matches[1[0]为匹配的全部字符串,然后才是$matches[1][1]、$matches[1][2]、$matches[1][3]一次分别为各部分匹配的子记录 [2]以此类推 PREG_PATTERN_ORDER选项(默认): 结果排序为$matches[0]保存了完整模式的所有匹配,$matches[1]保存了第一个子组的所有匹配,一次类推。 关于子组的数目,通过程序调试发现,应该与”(正则表达式)”是一一对应的。每多增加一个带括号的正则表达式,$matches就会多一个分组。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |