您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
可以抓取个人主页的微博内容
当前为
// ==UserScript== // @name 微博内容抓取2.0 // @namespace wwww // @license MPL // @version 2.0.4 // @description 可以抓取个人主页的微博内容 // @match https://www.weibo.com/u/* // @match https://weibo.com/u/* // @grant GM_xmlhttpRequest // @grant GM_download // @require https://code.jquery.com/jquery-2.1.4.min.js // @require https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js // ==/UserScript== (function() { 'use strict'; console.log("textstr"); //https://weibo.com/ajax/statuses/mymblog?uid=1260134537&page=1&feature=0 var button = document.createElement("button"); //创建一个input对象(提示框按钮) button.id = "id001"; button.textContent = "开始抓取"; button.style.width = "90px"; button.style.height = "30px"; button.style.align = "center"; button.style.backgroundColor = "#ea8011"; var sleep_times = 1000; //绑定按键点击功能 button.onclick = function (){ var repeat = prompt("请输入你要抓取的条数:","10"); var doc =document.getElementsByTagName('html')[0] var uid = doc.baseURI.replace(/[^0-9]/ig,"") var page = 1 get_blog_request(uid,page,null,repeat); return; }; var box = document.getElementById('cniil_wza'); //在浏览器控制台可以查看所有函数,ctrl+shift+I 调出控制台,在Console窗口进行实验测试 box.parentNode.insertBefore(button, box) var sum = 0; function get_blog_request(uid,page,since_id,repeat) { if(sum > parseInt(repeat)){ alert("结束爬取,爬取条数:" + sum) console.log("结束爬取,爬取条数:" + sum) return; } //拼接url var url = "https://weibo.com/ajax/statuses/mymblog?uid="+uid+"&page="+page+"&feature=0"; if(since_id != null){ url+= ("&since_id="+since_id) } GM_xmlhttpRequest({ method: "get", url: url, headers: { "Content-Type": "application/json", "cookie": document.cookie }, onload: function(response){ var data = analysisResponse(response); //发送微博下面的评论 //统计爬取总数 if(data.data.list.length == 0){ alert("请求不到更多的数据,结束爬取,爬取条数:" + sum) console.log("请求不到更多的数据,结束爬取,爬取条数:" + sum) return; } sendBlogData(data); sum += data.data.list.length; console.log("已成功爬取条数:" + sum) for (var i = 0; i < data.data.list.length; i++) { var id = data.data.list[i].id; get_commests_rquest(id,null,uid,0); } get_blog_request(uid,page+1,getSinceId(data),repeat); }, onerror: function(response){ console.log(response); console.log("请求失败"); } }); } function analysisResponse(response ){ var data = JSON.parse(response.response) return data; } function sendBlogData(data) { GM_xmlhttpRequest({ method: "POST", url: "http://116.205.177.46/weibo/saveBlogs", headers: { "Content-Type": "application/json" }, data:JSON.stringify(data.data.list), onload: function(response){ // console.log("sendBlogData 请求成功"); }, onerror: function(response){ console.log("sendBlogData 请求失败"); console.log(JSON.stringify(data.data.list)); } }); } function getSinceId(data) { // body... return data.data.since_id } function get_commests_rquest(id,max_id,uid,sum) { if(sum > 200){ return; } var url = "https://weibo.com/ajax/statuses/buildComments?flow=0&is_reload=1&id="+id+"&is_show_bulletin=2&is_mix=0&count=20&uid="+uid; if(max_id!=null){ url +=("&max_id="+max_id); } GM_xmlhttpRequest({ method: "get", url: url, headers: { "Content-Type": "application/json", "cookie": document.cookie }, onload: function(response){ //解析数据 var data = analysisResponse(response); for (var i = 0; i < data.data.length; i++) { data.data[i].blogId = id; } sendCommestsData(data); //如果还有数据 继续请求 if(data.data.length==20){ sleep(sleep_times + sum *10).then(() => { // 这里写sleep之后需要去做的事情 get_commests_rquest(id,getMaxId(data),uid, sum + 20); }) } }, onerror: function(response){ console.log("get_commests_rquest 请求失败"); console.log(response); } }); } function getMaxId(data) { return data.max_id } function sendCommestsData(data) { // console.log("sendCommestsData "); GM_xmlhttpRequest({ method: "POST", url: "http://116.205.177.46/weibo/saveComments", headers: { "Content-Type": "application/json" }, data:JSON.stringify(data.data), onload: function(response){ // console.log("sendCommestsData 请求成功"); }, onerror: function(response){ console.log("sendCommestsData 请求失败"); } }); } function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址