今日头条文章舆情

今日头条文章舆情抓取

  1. // ==UserScript==
  2. // @name 今日头条文章舆情
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.0.1
  5. // @description 今日头条文章舆情抓取
  6. // @author daben
  7. // @match https://www.toutiao.com/article/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=toutiao.com
  9. // @license MIT
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. function getArticleNum(domSelector, defaultText) {
  17. var el = document.querySelector(domSelector);
  18. var num = el ? el.textContent.trim() : 0;
  19. return /^\d+$/.test(num) ? num : defaultText;
  20. }
  21. function getCopyNum(numText) {
  22. return /^\d+$/.test(numText) ? numText : (parseInt(numText) || 0)
  23. }
  24.  
  25. window.addEventListener('load', function() {
  26. // 获取标题,这里假设标题元素是h1标签,可根据实际调整选择器
  27. var titleElement = document.querySelector('h1');
  28. var title = titleElement? titleElement.textContent.trim() : '未获取到标题';
  29. // 获取作者,假设作者信息在class为"author"的元素内,需按实际修改选择器
  30. var authorElement = document.querySelector('.article-meta .name');
  31. var author = authorElement? authorElement.textContent.trim() : '未获取到作者';
  32. // 获取发布时间,假设在class为"publish-time"的元素内,按需修改选择器
  33. var timeElement = document.querySelector('.article-meta span');
  34. var time = timeElement? timeElement.textContent.trim() : '未获取到发布时间';
  35. // 获取文章内容所在元素,假设文章内容在id为"article-content"的元素内,按实际调整
  36. var contentElement = document.querySelector('.tt-article-content');
  37. var wordCount = contentElement? contentElement.textContent.trim().length : 0;
  38. // // 阅读数
  39. // var readnum = getArticleNum('.read-num em', '未获取到阅读数')
  40. // 点赞数
  41. var likeNum = getArticleNum('.detail-like span', '未获取到点赞数')
  42. // 评论数
  43. var commentNum = getArticleNum('.detail-interaction-comment span', '未获取到评论数')
  44. // 收藏数
  45. var collectNum = getArticleNum('.detail-interaction-collect span', '未获取到收藏数')
  46. // // 分享数
  47. // var shareNum = getArticleNum('.share-c .count', '未获取到分享数')
  48.  
  49. // 创建一个用于显示信息的div元素作为浮窗
  50. var infoDiv = document.createElement('div');
  51. infoDiv.style.position = 'fixed';
  52. infoDiv.style.top = '0';
  53. infoDiv.style.right = '0';
  54. infoDiv.style.backgroundColor = 'rgba(255, 255, 255, 0.8)';
  55. infoDiv.style.padding = '10px';
  56. infoDiv.style.border = '1px solid gray';
  57. infoDiv.style.zIndex = '9999';
  58.  
  59. // 创建关闭按钮元素
  60. var closeButton = document.createElement('span');
  61. closeButton.id = '__close_btn__';
  62. closeButton.textContent = '×';
  63. closeButton.style.cursor = 'pointer';
  64. closeButton.style.float = 'right';
  65. closeButton.style.fontSize = '18px';
  66. closeButton.style.color = 'red';
  67.  
  68. // 创建复制按钮元素
  69. var copyButton = document.createElement('span');
  70. copyButton.id = '__copy__';
  71. copyButton.textContent = '复制';
  72. copyButton.style.cursor = 'pointer';
  73. copyButton.style.float = 'right';
  74. copyButton.style.marginRight = '5px';
  75. copyButton.style.fontSize = '18px';
  76. copyButton.style.color = 'blue';
  77.  
  78. // 先将关闭按钮添加到浮窗中
  79. infoDiv.appendChild(closeButton);
  80. // 再将复制按钮添加到浮窗中
  81. infoDiv.appendChild(copyButton);
  82.  
  83. // 将信息拼接成字符串并设置到浮窗的innerHTML中
  84. var infoText = `标题:${title}<br>作者:${author}<br>发布时间:${time}<br>字数:${wordCount}<br>点赞数:${likeNum}<br>评论数:${commentNum}<br>收藏数:${collectNum}`;
  85. infoDiv.innerHTML += infoText;
  86.  
  87. // 将浮窗添加到页面的body元素中
  88. document.body.appendChild(infoDiv);
  89.  
  90. document.querySelector('#__close_btn__').addEventListener('click', function() {
  91. infoDiv.parentNode.removeChild(infoDiv);
  92. });
  93.  
  94. document.querySelector('#__copy__').onclick = function() {
  95. var copyText = `${time.replace(/[年月]/g, '/').replace(/日/, '')}\t今日头条\t${author}\t${title}\t${window.location.href}\t点赞${getCopyNum(likeNum)} 评论${getCopyNum(commentNum)} 收藏${getCopyNum(collectNum)}\t${wordCount}`;
  96. navigator.clipboard.writeText(copyText).then(function() {
  97. console.log('已复制到剪贴板');
  98. }).catch(function(err) {
  99. console.error('复制失败:', err);
  100. });
  101. };
  102. });
  103. })();

QingJ © 2025

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