Discussions » Creation Requests
求开发豆瓣读书页面,图书信息介绍部分自动展开的脚本
不是什么复杂的东西,不过个人觉得这玩意似乎实用体验并不好,自动展开之后有时不想看了拖到怀疑人生
// ==UserScript==
// @name 豆瓣读书自动展开详情
// @namespace indefined
// @version 0.1
// @description 自动展开豆瓣的内容简介、作者简介、目录
// @author indefined
// @include https://book.douban.com/subject/*/
// @grant none
// ==/UserScript==
(function() {
'use strict';
//自动展开内容简介、作者简介
[].forEach.call(document.querySelectorAll('.j.a_show_full'),item=>item.click());
//自动展开目录
const menu = document.querySelector('.indent>a');
menu&&menu.click();
//自动展开短评
//[].forEach.call(document.querySelectorAll('.short-content>a'),item=>item.click());
})();
想要自动展开短评的话把最下面一行前面的//去掉就好,不过我想应该用不到
@indefined 说道: 不是什么复杂的东西,不过个人觉得这玩意似乎实用体验并不好,自动展开之后有时不想看了拖到怀疑人生
// ==UserScript== // @name 豆瓣读书自动展开详情 // @namespace indefined // @version 0.1 // @description 自动展开豆瓣的内容简介、作者简介、目录 // @author indefined // @include https://book.douban.com/subject/*/ // @grant none // ==/UserScript== (function() { 'use strict'; //自动展开内容简介、作者简介 [].forEach.call(document.querySelectorAll('.j.a_show_full'),item=>item.click()); //自动展开目录 const menu = document.querySelector('.indent>a'); menu&&menu.click(); //自动展开短评 //[].forEach.call(document.querySelectorAll('.short-content>a'),item=>item.click()); })();
想要自动展开短评的话把最下面一行前面的//去掉就好,不过我想应该用不到
感谢,感谢! 文科生,研究了半天实在没弄好。 如果短评也展开的话,确实会拖到怀疑人生,O(∩_∩)O哈哈~ Thanks♪(・ω・)ノ
@indefined 说道: 不是什么复杂的东西,不过个人觉得这玩意似乎实用体验并不好,自动展开之后有时不想看了拖到怀疑人生
// ==UserScript== // @name 豆瓣读书自动展开详情 // @namespace indefined // @version 0.1 // @description 自动展开豆瓣的内容简介、作者简介、目录 // @author indefined // @include https://book.douban.com/subject/*/ // @grant none // ==/UserScript== (function() { 'use strict'; //自动展开内容简介、作者简介 [].forEach.call(document.querySelectorAll('.j.a_show_full'),item=>item.click()); //自动展开目录 const menu = document.querySelector('.indent>a'); menu&&menu.click(); //自动展开短评 //[].forEach.call(document.querySelectorAll('.short-content>a'),item=>item.click()); })();
想要自动展开短评的话把最下面一行前面的//去掉就好,不过我想应该用不到
嗨(^o^)/~,
再请教个问题
我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))
代码如下: document.getElementById("bdExpanderIcon").click();
示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1543724415
目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。
不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?
Thanks♪(・ω・)ノ 祝好!
@ttfuu 说道:
嗨(^o^)/~,
再请教个问题
我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))
代码如下: document.getElementById("bdExpanderIcon").click();
示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1543724415
目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。
不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?
Thanks♪(・ω・)ノ 祝好!
很慢是因为脚本默认页面加载完才执行的,有时候不管用可能因为脚本执行太快了,这个按钮还没出来或者脚本按完这个按钮又被页面还原了,在脚本头加上一行
// @run-at document-idle
把脚本运行位置设置为idle可能可以缓解有时失效的问题,但是加载更慢。
全选没有复制到描述,可能是因为那段描述是内嵌框体,浏览器可能把它判断为另一个网页,但是我这里测试了全选是都能复制的,不展开那个按钮也能复制到全部内容,如果你的浏览器死活不复制内嵌框体里的内容,那大概也没什么好的办法能解决
个人认为如果是日常使用自己点一下并不麻烦,如果是批量抓取数据的话,大概你应该用更高效的爬虫而不是一个个打开网页的方式。如果没太大需求的话,简单复制一下东西还是不难的
const area = document.createElement('textarea');
area.value = document.getElementById('centerCol').innerText + frames['bookDesc_iframe'].contentDocument.body.innerText;
document.body.appendChild(area);
area.select();
随便在页面底部插一个文本框,把需要的东西放进去然后选中,这样页面加载完你就可以不用按ctrl+a也不用看直接ctrl+c就可以了,如果ctrl+c都懒得按,那就再加上一行document.execCommand('copy')
美观和兼容性问题我就懒得照顾了,既然你已经学会寻找页面元素那随便模仿一下问题应该不大
@indefined 说道:
@ttfuu 说道:
嗨(^o^)/~,
再请教个问题
我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))
代码如下: document.getElementById("bdExpanderIcon").click();
示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1543724415
目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。
不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?
Thanks♪(・ω・)ノ 祝好!
很慢是因为脚本默认页面加载完才执行的,有时候不管用可能因为脚本执行太快了,这个按钮还没出来或者脚本按完这个按钮又被页面还原了,在脚本头加上一行
// @run-at document-idle
把脚本运行位置设置为idle可能可以缓解有时失效的问题,但是加载更慢。
全选没有复制到描述,可能是因为那段描述是内嵌框体,浏览器可能把它判断为另一个网页,但是我这里测试了全选是都能复制的,不展开那个按钮也能复制到全部内容,如果你的浏览器死活不复制内嵌框体里的内容,那大概也没什么好的办法能解决
个人认为如果是日常使用自己点一下并不麻烦,如果是批量抓取数据的话,大概你应该用更高效的爬虫而不是一个个打开网页的方式。如果没太大需求的话,简单复制一下东西还是不难的
const area = document.createElement('textarea'); area.value = document.getElementById('centerCol').innerText + frames['bookDesc_iframe'].contentDocument.body.innerText; document.body.appendChild(area); area.select();
随便在页面底部插一个文本框,把需要的东西放进去然后选中,这样页面加载完你就可以不用按ctrl+a也不用看直接ctrl+c就可以了,如果ctrl+c都懒得按,那就再加上一行
document.execCommand('copy')
美观和兼容性问题我就懒得照顾了,既然你已经学会寻找页面元素那随便模仿一下问题应该不大
>兄好,这几天外出,没来及看更新,感谢仁兄的回复。
>我没有采集的需求,爬虫更是用不到。我的使用场景是,在写东西或者整理书单的时候使用,平日会整理书单或者写点东西,有时候给学生整理书单,如果一个书单是二十本书,这时候每次点开更多,再去复制,然后再点选中间复制,还是挺大量的,那种频繁采集或者大量采集是用不到。
>一开始,我理想的状态是,用脚本弄一个按钮,点一下这本书的信息就复制好了,但是发现自己弄不来。
>退而求其次,我通过其他软件,实现了Ctrl+a复制的所有文字,自动帮我处理为书籍信息,然后我使用就可以。这时候遇到的困难就是展开问题,如果全部展开那么我也可以减少很多步骤,目前最后一个问题亚马逊中间那段信息的复制也解决了。
>十分感谢仁兄的帮助!真心感谢!祝好!(^o^)/~
@indefined 说道:
@ttfuu 说道:
嗨(^o^)/~,
再请教个问题
我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))
代码如下: document.getElementById("bdExpanderIcon").click();
示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1543724415
目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。
不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?
Thanks♪(・ω・)ノ 祝好!
很慢是因为脚本默认页面加载完才执行的,有时候不管用可能因为脚本执行太快了,这个按钮还没出来或者脚本按完这个按钮又被页面还原了,在脚本头加上一行
// @run-at document-idle
把脚本运行位置设置为idle可能可以缓解有时失效的问题,但是加载更慢。
全选没有复制到描述,可能是因为那段描述是内嵌框体,浏览器可能把它判断为另一个网页,但是我这里测试了全选是都能复制的,不展开那个按钮也能复制到全部内容,如果你的浏览器死活不复制内嵌框体里的内容,那大概也没什么好的办法能解决
个人认为如果是日常使用自己点一下并不麻烦,如果是批量抓取数据的话,大概你应该用更高效的爬虫而不是一个个打开网页的方式。如果没太大需求的话,简单复制一下东西还是不难的
const area = document.createElement('textarea'); area.value = document.getElementById('centerCol').innerText + frames['bookDesc_iframe'].contentDocument.body.innerText; document.body.appendChild(area); area.select();
随便在页面底部插一个文本框,把需要的东西放进去然后选中,这样页面加载完你就可以不用按ctrl+a也不用看直接ctrl+c就可以了,如果ctrl+c都懒得按,那就再加上一行
document.execCommand('copy')
美观和兼容性问题我就懒得照顾了,既然你已经学会寻找页面元素那随便模仿一下问题应该不大
indefined兄: 你好,国庆快乐。再次感谢对问题的解答。 这里叨扰一下,再请教一个问题。 还是这个亚马逊的脚本,现在想做书单展示的时候能显示封面,所有一直都努力想在脚本里添加上书籍的封面链接。 通过搜索,能够很多次以后能通过document.querySelector("#ebooksImgBlkFront").src这个语句获得到图片地址。 但是很遗憾,怎么尝试都无法添加到脚本里,还请兄有时间能帮忙解答一下,怎么能让这个图片链接显示呢?想法时这个可能不是文本,想创建一个id然后获取地址之后赋值给它,但都不成功,但是怎么搜都写不出来,不对。 还请兄看到帮忙解答一下
@ttfuu 说道:
@indefined 说道:
@ttfuu 说道:
嗨(^o^)/~,
再请教个问题
我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))
代码如下: document.getElementById("bdExpanderIcon").click();
示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1543724415
目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。
不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?
Thanks♪(・ω・)ノ 祝好!
很慢是因为脚本默认页面加载完才执行的,有时候不管用可能因为脚本执行太快了,这个按钮还没出来或者脚本按完这个按钮又被页面还原了,在脚本头加上一行
// @run-at document-idle
把脚本运行位置设置为idle可能可以缓解有时失效的问题,但是加载更慢。
全选没有复制到描述,可能是因为那段描述是内嵌框体,浏览器可能把它判断为另一个网页,但是我这里测试了全选是都能复制的,不展开那个按钮也能复制到全部内容,如果你的浏览器死活不复制内嵌框体里的内容,那大概也没什么好的办法能解决
个人认为如果是日常使用自己点一下并不麻烦,如果是批量抓取数据的话,大概你应该用更高效的爬虫而不是一个个打开网页的方式。如果没太大需求的话,简单复制一下东西还是不难的
const area = document.createElement('textarea'); area.value = document.getElementById('centerCol').innerText + frames['bookDesc_iframe'].contentDocument.body.innerText; document.body.appendChild(area); area.select();
随便在页面底部插一个文本框,把需要的东西放进去然后选中,这样页面加载完你就可以不用按ctrl+a也不用看直接ctrl+c就可以了,如果ctrl+c都懒得按,那就再加上一行
document.execCommand('copy')
美观和兼容性问题我就懒得照顾了,既然你已经学会寻找页面元素那随便模仿一下问题应该不大indefined兄: 你好,国庆快乐。再次感谢对问题的解答。 这里叨扰一下,再请教一个问题。 还是这个亚马逊的脚本,现在想做书单展示的时候能显示封面,所有一直都努力想在脚本里添加上书籍的封面链接。 通过搜索,能够很多次以后能通过document.querySelector("#ebooksImgBlkFront").src这个语句获得到图片地址。 但是很遗憾,怎么尝试都无法添加到脚本里,还请兄有时间能帮忙解答一下,怎么能让这个图片链接显示呢?想法时这个可能不是文本,想创建一个id然后获取地址之后赋值给它,但都不成功,但是怎么搜都写不出来,不对。 还请兄看到帮忙解答一下
哈哈,已经解决了,最后终于尝试出来了。
求开发豆瓣读书页面,图书信息介绍部分自动展开的脚本
大家好 <3
纯纯纯小小小白一只,
求不知能否写一个豆瓣读书页面(展开全部)(更多)的自动展开啊
如附图中,关于作者的介绍,书籍目录部分
感觉这个应该不是很难,可是小白一点都不会啊!
Thanks♪(・ω・)ノ o( ̄▽ ̄)o
实例:
e.g. https://book.douban.com/subject/30337300/
里面有三个,两个(展开全部)一个(更多)**