什么值得买抓取评论

什么值得买

// ==UserScript==
// @name         什么值得买抓取评论
// @namespace    https://github.com/ClericPy/somethings
// @version      0.5
// @description  什么值得买
// @author       Clericpy
// @match        http*://*.smzdm.com/*
// @grant        GM_xmlhttpRequest
// @connect      www.smzdm.com
// @connect      post.smzdm.com
// ==/UserScript==

; (function () {
    unsafeWindow.crawler_interval = 1000
    unsafeWindow.stop_crawler = false
    function append_items(title, items, url_id) {
        document.getElementById('show_node').innerHTML += `<hr><h2><a href="${decodeURIComponent(url_id)}" target="_blank"><b>${title}</b></a></h2><hr>`
        let show_node = document.getElementById('show_node')
        items.reverse().forEach((item) => {
            show_node.appendChild(item)
        })
    }
    function load_cmts(url, force, url_id, title, items) {
        if (force) {
            //   document.querySelector('.feed-pagenation').scrollIntoView({ behavior: 'smooth' })
            unsafeWindow.stop_crawler = false
            let btn = document.getElementById(url_id)
            btn.innerText = '正在抓取'
            btn.disabled = true
        }
        if (unsafeWindow.stop_crawler) {
            let msg = '停止抓取: ' + items.length + ' ×'
            document.getElementById('crawl_msg').innerHTML = msg
            let btn = document.getElementById(url_id)
            btn.innerText = '抓取评论'
            btn.disabled = false
            alert('抓取已停止')
            append_items(title, items, url_id)
            return
        }
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            onload: function (resp) {
                var sub_doc = document.createElement('div')
                sub_doc.innerHTML = resp.responseText.trim()
                let cmts = sub_doc.querySelectorAll('#commentTabBlockNew div.comment-main-list-item-content')
                cmts.forEach((item) => {
                    var text = ''
                    item.querySelectorAll('.comment-main-list-item-content-info > div:nth-of-type(1),.comment-main-list-item-content-comment').forEach((item2) => {
                        let t = item2.innerText
                        text += t
                        if (t.indexOf('·') != -1) {
                            text += '<hr>'
                        }
                    })
                    let newline = document.createElement('li')
                    newline.innerHTML = `<span>${text}</span>`
                    items.push(newline)
                })
                let msg = '正在抓取: ' + items.length
                document.getElementById('crawl_msg').innerHTML = msg
                let btn = document.getElementById(url_id)
                btn.innerText = msg
                // 判断是否有下页
                let np = sub_doc.querySelector('li.pagedown a')
                if (np) {
                    setTimeout(() => {
                        load_cmts(np.href, false, url_id, title, items)
                    }, unsafeWindow.crawler_interval)
                } else {
                    let msg = '抓取完毕: ' + items.length + ' √'
                    document.getElementById('crawl_msg').innerHTML = msg
                    btn.innerText = '抓取完毕'
                    append_items(title, items, url_id)
                }
            },
        })
    }
    unsafeWindow.load_cmts = load_cmts
    function init() {
        let style = document.getElementsByTagName('style')[0]
        style.innerHTML += `
      #show_node>li>span.time{
          width: 7em;
          display:inline-block;
          text-align: center;
      }
      #show_node{
          margin-left: 2em;
      }
      #show_node>li{
          margin: 10px;
          list-style-type:decimal;
      }
      button.custom_cmts{
        display: inline-block;
        margin: 5px;
        zoom: 0.8;
        cursor: pointer;
        border: 1px solid #bbb;
        overflow: visible;
        font: bold 13px arial, helvetica, sans-serif;
        text-decoration: none;
        white-space: nowrap;
        background-image: -webkit-linear-gradient(top, rgba(255,255,255,1), rgba(255,255,255,0));
        transition: background-color .2s ease-out;
        background-clip: padding-box;
        border-radius: 3px;
        box-shadow: 0 1px 0 rgba(0, 0, 0, .3), 0 2px 2px -1px rgba(0, 0, 0, .5), 0 1px 0 rgba(255, 255, 255, .3) inset;
        text-shadow: 0 1px 0 rgba(255,255,255, .9);
        user-select: none;
        background-color: #eee;
        color: #555;
        padding: 4px 12px;
      }`
        document.querySelectorAll('#feed-main-list>li').forEach((doc) => {
            let title_tag = doc.querySelector('.feed-block-title,.feed-shaiwu-title')
            if (!title_tag) {
                return
            }
            let title = title_tag.innerText.trim().replace(/\n/g, ' ')
            let item = doc.querySelector('a.feed-btn-comment,a[class="z-group-data"]')
            if (!item) {
                return
            }
            if (item.title == '评论数 0') {
                return
            }
            doc.style = 'background-color: rgb(255 244 150 / 49%);'
            let button = document.createElement('button')
            button.id = encodeURIComponent(item.href)
            button.setAttribute('onclick', `load_cmts('${item.href}', true, '${button.id}', '${title}', [])`)
            button.innerText = '抓取评论'
            button.className = 'custom_cmts'
            button.title = '停止按钮在下方评论列表'
            item.parentNode.appendChild(button)

            let button2 = document.createElement('button')
            button2.setAttribute('onclick', "document.querySelector('.feed-pagenation').scrollIntoView({behavior: 'smooth'})")
            button2.innerText = '查看结果'
            button2.className = 'custom_cmts'
            item.parentNode.appendChild(button2)
        })
        let temp_node = document.querySelector('.feed-pagenation')
        let head = document.createElement('h2')
        head.id = 'show_node_head'
        head.innerHTML = '<b style="font-size: 1.5em;">评论列表</b><br><span id="crawl_msg"></span>'
        temp_node.parentNode.insertBefore(head, temp_node)

        let stop_btn = document.createElement('button')
        stop_btn.setAttribute('onclick', '(function (){window.stop_crawler=true})()')
        stop_btn.innerHTML = '<b>停止</b>'
        stop_btn.className = 'custom_cmts'
        temp_node.parentNode.insertBefore(stop_btn, temp_node)

        let clear_btn = document.createElement('button')
        clear_btn.setAttribute('onclick', "(function (){document.getElementById('show_node').innerHTML='';document.getElementById('crawl_msg').innerHTML='已清空'})()")
        clear_btn.innerHTML = '<b>清空</b>'
        clear_btn.className = 'custom_cmts'
        temp_node.parentNode.insertBefore(clear_btn, temp_node)

        let show_node = document.createElement('ol')
        show_node.id = 'show_node'
        temp_node.parentNode.insertBefore(show_node, temp_node)
    }
    window.onload = init
})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址