php网页抓取工具(Teleport乱码遇到这个问题-v2.0工具就会报错)
优采云 发布时间: 2022-03-06 19:01php网页抓取工具(Teleport乱码遇到这个问题-v2.0工具就会报错)
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。很好; 具体的操作手册和其他的东西这里就不说了。有很多在线搜索。以下是遇到的主要问题:
工具截图:
抓取后渲染
一般我会选择复制100级,基本上把网站的东西都复制了,但是因为Teleport Ultra是用UTF-8编码取的,如果文件中有汉字,或者gbk编码的文件就会出现乱码如下图:
当然你也可以在浏览器中手动选择UTF-8,但是我们不能每次打开都这样。于是我就去网站找了一个软件叫:TelePort乱码修复工具(siteRepair-v2.0),经过测试可以解决乱码问题,这个工具也会清除一些无效链接和 html 符号等。
软件截图:
绝大多数网站经过这两步应该就OK了,但是有些网站在层次结构中使用了中文目录或者中文文件名,会出现乱码,类似于下面的URL地址:
这样,当抓到网站的结构时,会出现两种乱码:1)文件夹名乱码2)文件名乱码
遇到这个问题,siteRepair-v2.0工具会报错。我猜它无法识别乱码文件夹或文件。
后来在网上找到了一个PHP程序,简单的修改测试就可以解决这个问题
PHP代码:convert.php
{if(is_dir($dir))
{if ($dh = opendir($dir))
{while (($file = readdir($dh)) !== false)
{if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
{rename($dir."/".$file,$dir."/".mb_convert_encoding($file,"GBK", "UTF-8"));
listDir($dir."/".$file."/");
}else{if($file!="." && $file!="..")
{$name=rename($dir."/".$file,$dir."/".str_replace('\\','',mb_convert_encoding($file,"GBK", "UTF-8"))) ;echo '路径:'.$dir."/".$file.'
';echo '结果:'.str_replace('\\','',mb_convert_encoding($file,"GBK", "UTF-8")).'
';
}
}
}closedir($dh);
}
}
listDir("./convert");?>
在代码同级目录下新建convert文件夹,将乱码文件放入该目录,然后执行convert.php。