用php抓取网站中网页并下载依赖的css及js图片等(网站下载到本地)

用php抓取网站中网页并下载依赖的css及js图片等(网站下载到本地)

用php抓取网站中网页并下载依赖的css及js图片等(网站下载到本地)

如果我们要抓取网页的话,php中的curl或file_get_content,或在file_get_html,很简单是不是

那么如果把一个企业的网站及各个子页面抓取保存到本地怎么弄呢,爬虫可以做,具体怎么做呢,今天我们来演示一下如何通过php把一个企业的网站整站爬取下载下来,包括里面的图片js、css的依赖文件

废话不多,先上代码

<?php
require 'simple_html_dom.php';
// Create DOM from URL or file
$str = 'http://effect.bfw.wiki/CodeBlock/View/id/15625645726477080017.html';
$html = file_get_html($str);
$fn = getfilename($str);

// 下载相关的script
foreach ($html->find('script') as $element) {
    echo $element->src . '<br>';
    downloadFile($element->src, getfilename($element->src));
    $element->src = getfilename($element->src);

}
// 下载相关的style
foreach ($html->find('link') as $element) {
    echo $element->href . '<br>';
    downloadFile($element->href, getfilename($element->href));
    $element->href = getfilename($element->href);

}
// 下载相关的img
foreach ($html->find('img') as $element) {
    echo $element->src . '<br>';
    downloadFile($element->src, getfilename($element->src));
    $element->src = getfilename($element->src);

}
//保存修改过地址的网页文件
$fp1 = @fopen($fn, "w");
fwrite($fp1, $html->outertext);
fclose($fp1);
$html->clear();

function getfilename($url)
{
    return str_replace("/", "", strrchr($url, "/"));
}

function downloadFile($url, $filename)
{
    if ($url == "") {
        return false;
    }
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $info = curl_exec($curl);
    curl_close($curl);
    $fp2 = @fopen($filename, "w");
    fwrite($fp2, $info);
    fclose($fp2);
    return true;
}
?>




{{collectdata}}

网友评论0