PHP 实现网页爬虫

方法一

通过fopen和stream_get_contents获取html内容

从给定的url获取html内容

/**
     * 爬虫程序 -- 原型
     * 从给定的url获取html内容
     * 通过fopen和stream_get_contents获取html内容
     * @param string $url 
     * @return string 
     */
    function _getUrlContent($url)
    {
        //fopen() 函数打开一个文件或 URL。
        $handle = fopen($url, "r");
        // var_dump($handle);die;

        if ($handle) {
            //官方是这样描述的与 stream_get_contents();file_get_contents() 一样,但是 stream_get_contents() 是对一个已经打开的资源流进行操作,并将其内容写入一个字符串返回
            $content = stream_get_contents($handle, 1024 * 1024);
            return $content;
        } else {
            return false;
        }
    }

从html内容中筛选链接。爬取信息,可直接调用

/**
     * 从html内容中筛选链接。爬取信息,可直接调用
     * @param string $web_content
     * @param  [type] $tag   [要查找的标签]
     * @param  [type] $attr  [要查找的属性名]
     * @param  [type] $value [属性名对应的值]
     * @return array 
     */
    function _filterUrl($web_content)
    {
        $tag = 'div';
        $attr = '';
        $value = '';
        //自定义正则表达式
        $reg_tag_a = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\/$tag>/is";
        //获取页面所有链接的正则表达式
        //$reg_tag_a = "/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/";
        
		//preg_match_all 函数用于执行一个全局正则表达式匹配。
		//参数一:$pattern: 要搜索的模式,字符串形式。
		//参数二:$subject: 输入字符串。
		//参数三:$matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
		//参数四:$flags:匹配模式,默认PREG_PATTERN_ORDER
        $result = preg_match_all($reg_tag_a, $web_content, $match_result);

        if ($result) {
        	//匹配结果
            return $match_result[1];
        }
    }<
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值