加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用正则表达式采集网页上的图片信息

发布时间:2020-12-14 02:05:39 所属栏目:百科 来源:网络整理
导读:1 具体步骤 ①使用file_get_contents()函数获取url的内容。 ②浏览要采集的网页的源代码,找出要提取元素的物理位置。一定要仔细分析,找准位置。 ③写正则表达式,将要匹配的img元素的src部分给提取出来。正则表达式的准确性我个人感觉是最最重要的。 ④使

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就会多一个分组。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读