用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; } ?>
网友评论0