Discussions » Creation Requests

求开发豆瓣读书页面,图书信息介绍部分自动展开的脚本

§
Posted: 2018-11-29
Edited: 2018-11-29

求开发豆瓣读书页面,图书信息介绍部分自动展开的脚本

大家好 <3

纯纯纯小小小白一只,

求不知能否写一个豆瓣读书页面(展开全部)(更多)的自动展开啊

如附图中,关于作者的介绍,书籍目录部分

感觉这个应该不是很难,可是小白一点都不会啊!

Thanks♪(・ω・)ノ o( ̄▽ ̄)o

实例:

e.g. https://book.douban.com/subject/30337300/

里面有三个,两个(展开全部)一个(更多)**

§
Posted: 2018-12-01

不是什么复杂的东西,不过个人觉得这玩意似乎实用体验并不好,自动展开之后有时不想看了拖到怀疑人生

// ==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());
})();

想要自动展开短评的话把最下面一行前面的//去掉就好,不过我想应该用不到

§
Posted: 2018-12-01

@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♪(・ω・)ノ

§
Posted: 2018-12-02
Edited: 2018-12-02

@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=sr11?s=digital-text&ie=UTF8&qid=1543724415

目前主要的问题是,亚马逊展开后,我用Ctrl+a全选复制整个网页,想粘贴到文本里,发现展开的这部分没法被全选时复制,必须得鼠标点击一下那段简介,然后全选(这是全选的是展开的这段简介),这时可以复制。

不知道,能否实现展开后这段文字是可以被在网页任意位置,Ctrl+a就能全选复制呢?

Thanks♪(・ω・)ノ 祝好!

§
Posted: 2018-12-02

@ttfuu 说道:

嗨(^o^)/~,

再请教个问题

我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))

代码如下: document.getElementById("bdExpanderIcon").click();

示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr11?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') 美观和兼容性问题我就懒得照顾了,既然你已经学会寻找页面元素那随便模仿一下问题应该不大

§
Posted: 2018-12-05
Edited: 2018-12-05

@indefined 说道:

@ttfuu 说道:

嗨(^o^)/~,

再请教个问题

我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))

代码如下: document.getElementById("bdExpanderIcon").click();

示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr11?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^)/~

§
Posted: 2019-09-30

@indefined 说道:

@ttfuu 说道:

嗨(^o^)/~,

再请教个问题

我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))

代码如下: document.getElementById("bdExpanderIcon").click();

示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr11?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然后获取地址之后赋值给它,但都不成功,但是怎么搜都写不出来,不对。 还请兄看到帮忙解答一下

§
Posted: 2019-10-05
Edited: 2019-10-05

@ttfuu 说道:

@indefined 说道:

@ttfuu 说道:

嗨(^o^)/~,

再请教个问题

我瞎鼓捣了半天,简单实现了亚马逊的图书简介展开,很傻瓜,点击了一下(能展开,但是好像很慢,我肉眼可以看到它展开的过程,有时候得刷新两次页面才管用,不过总比手动点强,(^▽^))

代码如下: document.getElementById("bdExpanderIcon").click();

示例图书地址:https://www.amazon.cn/dp/B07JMMJ1C3/ref=sr11?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然后获取地址之后赋值给它,但都不成功,但是怎么搜都写不出来,不对。 还请兄看到帮忙解答一下

哈哈,已经解决了,最后终于尝试出来了。

Post reply

Sign in to post a reply.