现在网络上的资料越来越丰富,我们每个人都免不了需要去一些平台查找一些资料信息。但是查询到的内容我们往往会很头疼,因为平台会限制你的复制功能,除非你充值网站会员,但是我们需要复制的次数较少的情况下,大多数人都不会选择去花钱去开会员的,这就让人非常的头疼了。
今天分享一下本人收集的几种很常用也很实用的内容提取方法
# 禁止复制的原理
温馨提示
本节内容需要有javascript 编程基础,可选择直接跳过
复制和粘贴操作是网民日常的一些基本操作,但有些网站为了保护版权(如小说类、图片类),禁止用户执行这些操作,这样就可以防止用户将正在浏览的文本,通过复制、粘贴的方式进行传播了。
这里主要涉及到两个DOM 事件
# oncopy 事件
定义:
- oncopy 事件在用户拷贝元素上的内容时触发。
- oncopy 事件在用户拷贝元素时也会触发,例如, 拷贝
<img>
元素。 - oncopy 事件通常用于 type="text" 的
<input>
元素。
拷贝方式:
- 按下 CTRL + C
- 在你的浏览器的 Edit(编辑) 菜单中选择 "Copy(复制)"
- 右键鼠标按钮,在上下文菜单中选择 "Copy(复制)" 命令。
浏览器支持:
使用方法:
- HTML 中利用绑定方法
<element oncopy="myScript">
- Javascript 中利用对象身上的方法
object.oncopy = function(){
//操作
myScript
}
2
3
4
- Javascript 中利用事件监听的方式
object.addEventListener('copy',myScript);
//IE8及更早的IE版本不支持addEventListener()方法
2
# onpaste 事件
定义:
onpaste 事件在用户向元素中粘贴文本时触发。
虽然使用的 HTML 元素都支持 onpaste 事件,但实际上并非支持所有元素,例如
<p>
元素, 除非设置了 contenteditable 为 "true" 。onpaste 事件通常用于 type="text" 的
<input>
元素。
粘贴方式:
- 按下 CTRL + V
- 从浏览器的编辑菜单中选择 "Paste(粘贴)"
- 右击鼠标按钮在上下文菜单中选择 "Paste(粘贴)" 命令。
浏览器支持:
语法:
- HTML 中利用绑定方法
<element onpaste="myScript">
- Javascript 中利用对象身上的方法
object.onpaste = function(){
//操作
myScript;
}
2
3
4
- Javascript 中利用事件监听的方式
object.addEventListener('paste',myScript);
//Internet Explorer 8 及更早 IE 版本不支持 addEventListener() 方法。
2
# 实现原理
执行复制与粘贴事件,并在事件中返回false。
var bodyMain = document.getElementById('bodyMain' );
//禁止复制
bodyMain.oncopy = function(){
return false;
}
//禁止粘贴
bodyMain.onpaste = function(){
return false;
}
2
3
4
5
6
7
8
9
10
# 百度文库
# 一、用一行代码提取内容
话不多说,直接上代码
let content="";document.querySelectorAll(".reader-word-layer").forEach(x=>content+=x.innerText);content;
在需要提取的内容页面按F12 调出控制台,切换到Console 栏,粘贴以下代码到控制台中,敲击回车
强行一行代码提取所有文字信息,但是看起来有点奇怪,原因是仅仅简单的做了下内容拼接,并未实现换行,所有内容挤在了一行
可以如下改良一下代码,手动添加换行
let topDiff = -1;
let content = "";
const target = document.querySelectorAll(".reader-word-layer");
target.forEach(x => {
if (x.style.top !== topDiff) {
content += "\n";
topDiff = x.style.top;
};
content += x.innerText;
});
content;
2
3
4
5
6
7
8
9
10
11
使用方法也是一样的,复制代码粘贴到控制台
上面代码就实现了跟文档一样的内容换行了,看起来舒服多了
其实市面上很多所谓的百度文库提取器
,各种牛逼的大佬APP,只要是光内容提取,却丢了文档样式的,无非就是包装了以下上面这几行代码的产物而已
有了这方法,有个浏览器,会粘贴复制就行,压根不用去下载什么第三方
# 二、油猴插件
油猴插件是个非常牛叉的工具,里面集成的js 脚本可以大大增强我们的浏览器体验及操作便利性。如果圈内人不去接触使用一下就真太可惜了。
具体安装方法就不在这讲了,特别简单,本质上就是个浏览器的扩展插件(chrome内核的可以,firefox好像也行,其他的没试过)。就是下面这个黑黑的东西
油猴安装好了之后,我们可以在他的脚本网站(我一般用的是这个greasyfork)下载各种符合我们需求的插件
而我们需要提取百度文库或其他文库的文字内容时,我们只要在greasyfork中找合适的脚本 或直接点击【这里】,就能找到百度文库的脚本主页
只要点击安装就行了(我之前装过所以提示的是更新),在这说一下,看一个脚本好不好也跟github 看star 一样,看一眼他的安装量可以判定
安装好之后就可以直接浪了
进入百度文库后啥都不用干,你就能看到以下两个不同点
右上角油猴的图标会直接亮,会自动启动刚安装的脚本(如果没启动的,点击油猴菜单倒数第二个‘管理面板’,去里面看下脚本启动了没)
同时,左侧会多出下载和复制两个小按钮,点击复制你会发现
文章直接提取到页面了,这时候尽情复制就可以了
下载按钮顾名思义,就是将文章下载,但是下载下来的一样也没样式。
如果有兴趣的同学也可以观察一下,脚本提取内容的核心原理其实也是上面说的那几行js 代码
油猴插件的功能还有非常之多,比如可以自动解析各大付费视频,自动提取百度网盘密码,生成各大网盘下载直链等等,欢迎大家探索交流
# 哔哩哔哩动态内容
哔哩哔哩不仅可以刷视频看鬼畜和学习,同时也有个类似朋友圈也类似各大文章平台的功能,可以在里面发布动态或文章。
但是他却有个很大的限制,就是不能复制
昨天就遇到这个情况,在B站看到一篇不错的知识分享【】,通过作者授权后想转载一下,无奈不能复制,确实愁了一下
后面想到简历使用PDF格式的可以通过浏览器打开,也能复制粘贴,所以就考虑能不能将网页HTML转化为PDF
上网上找了下工具,无果,最终在一篇文章中看到了,其实非常简单,压根不用工具
只需要在需要复制的B站动态页面里,右键选择打印,或者直接按CTRL + P
便能调出打印界面,这个时候点击目标打印机更换为“另存为PDF”,选择保存路径保存即可
这个时候就在保存路径的目录下生成了一个PDF文件
右键选择打开方式,再选择浏览器打开就可以进入到另一个网页中了
在这里,你就可以随意复制了
—— 未经本人允许不得私自转载