php用正则表达抓取网页中文章(PHP正则表达式如何处理将要打开文件的标识和几种形式?)
优采云 发布时间: 2021-10-17 06:10php用正则表达抓取网页中文章(PHP正则表达式如何处理将要打开文件的标识和几种形式?)
最近有一个任务,从页面中抓取页面上的所有链接。当然,使用 PHP 正则表达式是最方便的方式。要编写正则表达式,您必须首先总结模式。页面上的链接有多少种形式?
链接也是超链接,它是从一个元素(文本、图像、视频等)到另一个元素(文本、图像、视频等)的链接。一个网页中的链接一般有三种,一种是绝对URL超链接,即一个页面的完整路径;另一种是相对URL超链接,一般链接到相同网站的其他页面;另一种是页面内的超链接,一般链接到同一页面内的其他位置。
一旦弄清楚了链接的类型,就知道要抓取链接,主要是绝对URL超链接和相对URL超链接。要编写正确的正则表达式,我们必须了解我们正在寻找的对象的模式。
再说说绝对链接,也叫URL(Uniform Resource Locator),它标识了互联网上唯一的资源。URL 结构由三部分组成:协议、服务器名、路径和文件名。
该协议告诉浏览器如何处理要打开的文件的识别,最常见的是http协议。本文也只考虑了HTTP协议,至于其他https、ftp、mailto、telnet协议等,可以根据需要自行添加。
服务器名称是告诉浏览器如何到达该服务器的方式。通常是域名或IP地址,有时会收录端口号(默认为80)。在FTP协议中,也可以收录用户名和密码。本文不考虑。
路径和文件名,通常用/分隔,表示文件的路径和文件本身的名称。如果没有具体的文件名,访问该文件夹下的默认文件(可以在服务器端设置)。
所以现在很明显,要抓取的绝对链接的典型形式可以概括为
每个部分可以使用的字符范围都有明确的规范。详情请参考RFC1738。然后就可以写正则表达式了。