noneoneone 发表于 2020-1-27 16:13

有没有什么简便的方式可以从discuz论坛保存下来几栋楼

某个常去的论坛快不行了,考虑把一些常看的东西备份出来,有没有什么方便的手段。还是只能一页一页保存?

diohanmilton 发表于 2020-1-27 16:17

若荼泱 发表于 2020-1-27 16:45

diohanmilton 发表于 2020-1-27 16:17
右上角有个打印图标 可以输出一个简版的合集

那个一次只能打印一页,而且并不好用。不知道是不是我姿势不对,打印第二页的时候,有时候会出现第一页的内容

若荼泱 发表于 2020-1-27 16:47

成型的轮子好像没有,之前泥潭挂的时候我还去搜过。感觉比较合理的可以试试chrome的capture full screen但是清晰度好像并不高,丢进web archieve可以作为备选,但是像泥潭这种有权限/要求登录的,web archieve就不好用。出来一个登录界面

testalphagogogo 发表于 2020-1-27 17:02

以前有WEBZIP,不晓得对现在的论坛还兼容不

diohanmilton 发表于 2020-1-27 17:11

碳. 发表于 2020-1-27 17:56

OfflineExplorer这个程序,可以快捷保存整楼,还可以定义文件类型,打包等等

win8 发表于 2020-1-27 18:34

关键字 整站下载 有现成的爬虫缺点是需要登陆才能看的内容可能看不到

bbn 发表于 2020-1-27 19:12

本帖最后由 bbn 于 2020-1-27 19:28 编辑

什么网站,不登录能看帖简单点。离线浏览软件,楼上说的Offline Explorer。需要登录就要cookies,也有这个选项,但是好像只能用IE。
爬虫没用过。

以前Firefox 有ScrapBook等扩展。

Baccano 发表于 2020-1-27 19:13

我是用自动翻插件加网页截图插件。
当然大批量搞这样效率就太低了。

奥氮平片 发表于 2020-1-27 19:14

油猴装自动翻页脚本,加载全部楼层后用浏览器自带的另存页面功能

碳. 发表于 2020-1-27 20:32

win8 发表于 2020-1-27 18:34
关键字 整站下载 有现成的爬虫缺点是需要登陆才能看的内容可能看不到

用上面说的OfflineExplorer就可以,自带浏览器登录一下获得cookie

ntr8 发表于 2020-1-27 22:04

量不大直接翻页脚本+打印为pdf完事
量大的话就楼里几位说的工具

longxiao7 发表于 2020-1-27 22:49

专门写过一个,但是针对性很强,不通用。建议直接截图保存

Alcatrazer 发表于 2020-1-28 06:19

git上搜搜?

rentrody 发表于 2020-1-28 08:28

三葉Mitsuha 发表于 2020-1-28 22:43

本帖最后由 三葉Mitsuha 于 2020-1-28 22:44 编辑

写过一个JS脚本,每次运行只能爬一个帖子,最多支持999页。
这个脚本是通过调用discuz的api,并把api返回的数据独立保存成一个.json文件(只能保存文本内容,非文本的无能为力了)

(function(THREAD_ID, MAX_PAGE) {
let pageIndex = 0

const downloadContent = function(contentText) {}
const rename = num => num > 99 ? num : num > 9 ? '0' + num : '00' + num

const getJSON = async function() {
    ++pageIndex;

    if (pageIndex > MAX_PAGE) {
      console.log('END')
      return
    }

    try {
      const xhr = new XMLHttpRequest()
      xhr.open('GET', `/2b/api/mobile/index.php?version=4&module=viewthread&tid=${THREAD_ID}&page=${pageIndex}`)
      xhr.overrideMimeType('text/plain; utf-8');
      xhr.setRequestHeader('Content-type', "text/plain; charset=utf-8")
      xhr.onreadystatechange = () => {
      if (xhr.readyState !== 4) {
          return
      }

      const blob = new Blob(, {type : 'application/json'})

      const anchor = document.createElement('a')
      const fileName = `thread_${THREAD_ID}_${rename(pageIndex)}.json`
      anchor.download = fileName
      anchor.href = window.URL.createObjectURL(blob)
      anchor.click()
      window.URL.revokeObjectURL(anchor.link)
      setTimeout(getJSON, 200)
      }
      xhr.send()
    } catch (err) {
      console.error(err)
    }
}

getJSON()
})()

使用方法,以chrome为例

0、进入你要爬的discuz的网页
1、打开浏览器开发者工具(f11?)
2、切至console
3、把以上代码粘贴至console,并在最末尾的括号内填写两个数字参数,用英文逗号隔开,之后敲击回车执行代码。
4、第一个参数是帖子id(通过网址可以得到),第二个参数是最大页码数。
5、第一次运行的话,chrome应该会询问你是否要下载多个文件,点击允许即可。

如果实在来不及找别的工具,可以先用这段代码把文本内容全弄下来。
页: [1]
查看完整版本: 有没有什么简便的方式可以从discuz论坛保存下来几栋楼