吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 316|回复: 11
收起左侧

[其他求助] 需要制作一个JavaScript爬取脚本

[复制链接]
beat2 发表于 2024-10-15 15:19
25吾爱币
http://bot93001.qch86.top/activation?t=1728388543712
帮我写一个获取激活码列表中所有2天、1天、0天前更新的激活码的JavaScript

最佳答案

查看完整内容

[mw_shl_code=javascript,true]const days = 2 let list= [] async function getData(page) { const res = await fetch(`http://service.bot.qch86.top:8100/activation/code/${page}`) const res_1 = await res.json() return res_1.data } async function getList(page) { const data = await getData(page) list = [...list].concat(...filterData(data, days)) console.log(list) if (list.lengt ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fxzh007 发表于 2024-10-15 15:19
[JavaScript] 纯文本查看 复制代码
const days = 2
let list= []
async function getData(page) {
    const res = await fetch(`http://service.bot.qch86.top:8100/activation/code/${page}`)
  const res_1 = await res.json()
  return res_1.data
}

async function getList(page) {
  const data = await getData(page)
  list = [...list].concat(...filterData(data, days))
  console.log(list)
  if (list.length === 20) {
    getList(page + 1)
  }
}

// 过滤掉days之前的数据
const filterData = (data, days) => {
  const dates = new Date(new Date().setHours(0, 0, 0, 0))
  return data.filter(item => {
    return dates - new Date(item.createTime).getTime() < days * 86400 * 1000
  })
}
getList(1)
 楼主| beat2 发表于 2024-10-17 03:45
 楼主| beat2 发表于 2024-10-17 12:58
fxzh007 发表于 2024-10-15 15:19
[mw_shl_code=javascript,true]const days = 2
let list= []
async function getData(page) {

之前封过一次http://service.bot.qch86.top:8100/activation/code/1这个接口,如果被封了有没有别的办法解决?


fxzh007 发表于 2024-10-17 16:16
beat2 发表于 2024-10-17 12:58
之前封过一次http://service.bot.qch86.top:8100/activation/code/1这个接口,如果被封了有没有别的办法 ...

那你就只能在页面中使用这套代码了

[JavaScript] 纯文本查看 复制代码
const days = 2
const today = new Date(new Date().setHours(0, 0, 0, 0))
const oneDay = 86400 * 1000
const daysMap = {
  "今": today,
  "昨": today - oneDay,
}
let list = []
const activationList = document.querySelectorAll('.activation-list .activation')

async function getList() {
  const activationList = setNewList(document.querySelectorAll('.activation-list .activation'))
  list = [...list].concat(...filterData(activationList,days))
  console.log(list)
}

const setNewList = (data) => {
  return Array.prototype.map.call(data, item => {
    const createTime = daysMap[item.children[0].innerText.split('天')[0]] ? daysMap[item.children[0].innerText.split('天')[0]] : today - oneDay * item.children[0].innerText.split('天')[0]
    console.log(createTime);
    
    return {
      createTime,
      content: item.children[1].innerText
    }
  })
}

// 过滤掉days之前的数据
const filterData = (data, days) => {
  const dates = new Date(new Date().setHours(0, 0, 0, 0))
  return data.filter(item => {
    console.log(dates - new Date(item.createTime).getTime() < days * oneDay);
    
    return dates - new Date(item.createTime).getTime() < days * oneDay
  })
}

getList()
 楼主| beat2 发表于 2024-10-17 16:49
fxzh007 发表于 2024-10-17 16:16
那你就只能在页面中使用这套代码了

[mw_shl_code=javascript,true]const days = 2


好像不对
fxzh007 发表于 2024-10-18 07:57

你那是一开始就调用了吧,你在39行改成页面加载完毕之后调用
[JavaScript] 纯文本查看 复制代码
window.onload = () => {
  getList()
}
 楼主| beat2 发表于 2024-10-18 21:13
fxzh007 发表于 2024-10-18 07:57
你那是一开始就调用了吧,你在39行改成页面加载完毕之后调用
[mw_shl_code=javascript,true]window.onlo ...

改了后还是一样
 楼主| beat2 发表于 2024-10-18 21:17
fxzh007 发表于 2024-10-18 07:57
你那是一开始就调用了吧,你在39行改成页面加载完毕之后调用
[mw_shl_code=javascript,true]window.onlo ...

是不是没有加找不到的提示判断啊,就是如果没有就提示一下
fxzh007 发表于 2024-10-19 10:53
beat2 发表于 2024-10-18 21:17
是不是没有加找不到的提示判断啊,就是如果没有就提示一下

抽空优化了一下,你再试试

[JavaScript] 纯文本查看 复制代码
const days = 2
const today = new Date(new Date().setHours(0, 0, 0, 0))
const oneDay = 86400 * 1000
const daysMap = {
  "今": today,
  "昨": today - oneDay,
}
let list = []
const activationList = document.querySelectorAll('.activation-list .activation')

async function getList() {
  const activationList = setNewList(document.querySelectorAll('.activation-list .activation'))
  list = [...filterData(activationList,days)]
  console.log(list)
  if (!list.length){
    return alert('没有数据')
  } else {
    const result = list.map(item => {
      return item.content
    }).join('\n')
    alert(result)
  }
}

const setNewList = (data) => {
  return Array.prototype.map.call(data, item => {
    const createTime = daysMap[item.children[0].innerText.split('天')[0]] ? daysMap[item.children[0].innerText.split('天')[0]] : today - oneDay * item.children[0].innerText.split('天')[0]
    console.log(createTime);
    
    return {
      createTime,
      content: item.children[1].innerText
    }
  })
}

// 过滤掉days之前的数据
const filterData = (data, days) => {
  const dates = new Date(new Date().setHours(0, 0, 0, 0))
  return data.filter(item => {
    console.log(dates - new Date(item.createTime).getTime() < days * oneDay);
    
    return dates - new Date(item.createTime).getTime() < days * oneDay
  })
}
createObserver =() => {
// 创建观察器
const observer = new MutationObserver(mutations => {
  getList()
})
observer.observe(document.querySelector('.activation-list'), {
  childList: true
})
}
window.onload = createObserver()
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 08:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表