使用Chrome、Firefox等浏览器的开发者工具采集信息
微wx笑 2022-07-27【前端开发】 5 0关键字: 信息采集 开发者工具 Chrome Firefox
有些内容是需要登录才可以查看的,后台处理登录逻辑比较麻烦;有些网站的实际内容是通过JS加载的,通过后台抓取的话根本抓取不到内容;还有的是通过JS+Canvas展示的内容,更是无法复制和下载,有没有比较好的办法呢?
有些内容是需要登录才可以查看的,后台处理登录逻辑比较麻烦;有些网站的实际内容是通过JS加载的,通过后台抓取的话根本抓取不到内容;还有的是通过JS+Canvas展示的内容,更是无法复制和下载,有没有比较好的办法呢?
有一种方法是:使用Chrome、Firefox等浏览器的开发者工具采集信息
// https://www.doc88.com/p-845684108744.html var page = document.getElementsByClassName("inner_page"); var idx = 0; var bookname = "xxx绝密教程总结"; var token = 'token'; function upbook(){ var data = new FormData(); data.append('token', token); data.append('name', bookname); data.append('page', idx+1); data.append('imgdata', page[idx].toDataURL("image/png").substr(22)); var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://czsc.ivu4e.com/doc88/savebook.php', true); xhr.responseType = 'text'; xhr.onload = function () { if (this.status == 200) { console.log(this.response); idx += 1; setTimeout(function (){ upbook(); }, 1000); }else{ console.log(this.status); } }; xhr.send(data); }; upbook();
这需要有自己的网站后台程序来配合
<? // http://www.doc88.com/p-1116070150325.html header("Access-Control-Allow-Origin: *");// http://www.doc88.com header('Access-Control-Allow-Methods:*'); header('Access-Control-Allow-Headers:*'); $token = "token"; if(empty($_POST['token'])){ die('permission denied ...'); } if($token !== $_POST['token']){ die('permission denied ......'); } //echo time(); $bookName = ""; $filename = ""; if (isset($_POST['name'])){ $bookName = $_POST['name']; } if (empty($bookName)){ die("图书名称‘name’不能为空"); } $page = 1; if (isset($_POST['page'])){ $page = intval($_POST['page']); } if (empty($page)){ die("图书页码‘page’不能为空"); } if ($page < 10){ $filename = "0" . $page; }else{ $filename = $page; } $dirname = "bookdir"; $filepath = $dirname . "/" . $bookName . "_" . $filename . ".png"; //创建目录失败 if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) { die("ERROR_CREATE_DIR"); return; } else if (!is_writeable($dirname)) { die("ERROR_DIR_NOT_WRITEABLE"); return; } if (isset($_POST['imgdata'])){ $base64Data = $_POST['imgdata']; $img = base64_decode($base64Data); //移动文件 if (!(file_put_contents($filepath, $img) && file_exists($filepath))) { //移动失败 die("ERROR_WRITE_CONTENT"); } else { //移动成功 echo "https://czsc.ivu4e.com/doc88/" . $filepath; } } ?>
在采集doc88的文档的时候,需要先把文档所有页面内容都查看一下,再快速回到顶部执行,
执行的同时滚动滚动条向下显示将要采集的页面
这里存在一个问题就是:如果内存不够用的话,有些页面可能会被浏览器清理了,这样在没有显示出来的情况,可能采集到的内容是空的。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2022-07-27/1327.html