PHP爬虫开发

文章目录

  • ==PHP爬虫开发==
    • 一、爬虫开发原理与实现
      • php爬取网页源代码
      • php爬取网页图片
    • 二、使用SimpleHtmlDom
    • 三、使用正则表达式

PHP爬虫开发

一、爬虫开发原理与实现

(1)XML和HTML本质上是相同的结构:DOMDocument可以处理XML,原则上来说也可以处理HTML。

(2)爬虫主要是爬取网页的内容(基于HTTP和HTML的内容),可以爬取一个网站上的图片,文件,页面内容等。

(3)搜索引擎的工作原理:爬取网页内容,对内容进行分词,分词后建立索引(倒排索引),进行排序后提供服务。

(4)爬取的基本过程:给定一个网址,然后解析响应的HTML页面内容,并下载保存(HTML文件),然后解析其中的超链接或其他资源(比如图片等),超链接就进行继续的访问和存档,图片就进行下载存档,给予找到的超链接,又继续解析更多的超链接。

(5)技术层面的实现要点:

  • 发送GET请求并获取响应的内容: file_get_contents
  • 解析页面中的URL地址或资源地址:DOMDocument
  • 继续访问解析出来的地址或资源:根据地址的特点分类和拼接,构建一个完整的URL地址库,继续访问,继续前面两步。(广度优先,深度优先)

php爬取网页源代码

<?php
    /**爬取页面源代码 */
    $contents = file_get_contents("http://www.woniunote.com/");
    // echo $contents;  //获取到页面的内容,其源代码和源页面源代码一致
    $html = new DOMDocument();
    $html->preserveWhiteSpace = false;

    @$html->loadHTML($contents);  //在前面加 @ 可以防止warnning警告的输出
    $links = $html->getElementsByTagName("a");
    // print_r($links);  // 输出结果 DOMNodeList Object ( [length] => 93 ) 我们可以看出这是一个链表,下面我们来遍历

    /**输出页面源代码中的超链接并存储到数组中 */
    $LinkList = array();
    foreach($links as $link) {
        
        // echo $link->nodeValue."<br>";  // 这个输出的是 <a></a> 中的值
        // echo $link->attributes->item(0)->nodeValue."<br>";  // 但注意,不是所有的<a></a>节点中的第一个属性都是href  
        foreach($link->attributes as $attr) {
   
            if($attr->nodeName == 'href') {
   
                // echo $attr->nodeValue."<br>";  // 得到的结果有三个类型 分别是以 / # http 开头
                // 利用 / # http 三个特征来判断href值的类型,以此分别拼接超链接
                if($attr->nodeValue[0] == '/' || $attr->nodeValue[0] == '#') {
   
                //if(strpos($attr->nodeValue,'/') == 0) //用这个判断也是可以的
                    // echo $attr->nodeValue[0];
                    echo "http://www.woniunote.com/".$attr->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值