zhangli742 发表于 2021-6-4 00:28:33

京东抢购代码求助

在倒计时结束的时候,需要刷新抢购页面,准备预约按钮会变成抢购按钮,然后点击按钮进行抢购,如果不用脚本,手动刷新的话,页面加载出来,马上能点击抢购按钮,但是用selenium 的 find 方法 获取抢购按钮就要等很久,想问问有没有大佬指点一下这个是什么原因,如何解决? 其他页面,都是可以瞬间查找到元素,进行操作的,但是就是抢购页面不行,每次执行到红框里面的代码的时候,就要等几十秒,才能过去按钮信息

suchocolate 发表于 2021-6-4 00:42:22

页面在加载吧

立面昬 发表于 2021-6-4 01:25:05

留个脚印,学习学习

wp231957 发表于 2021-6-4 05:35:47

selenium就是慢,没啥办法

z5560636 发表于 2021-6-4 15:16:05

貌似看到过直接绕过抢购页面,直接付款的插件。

han125416866 发表于 2021-6-4 17:27:35

{:9_231:}

zhangli742 发表于 2021-6-5 23:30:23

suchocolate 发表于 2021-6-4 00:42
页面在加载吧

对 ,就是因为页面在加载,所以获取不到信息,但是浏览器上面页面已经显示出来了,是可以正常点击的

ZhKQYu 发表于 2021-6-7 11:55:01

element = WebDriverWait(browser, 20).until(
            EC.presence_of_element_located((By.XPATH, '''定位元素'''))
      )
只要出现目标元素就不再等待全部元素加载完毕,直接可以对目标元素进行操作

连帅帅 发表于 2021-6-10 16:57:39

本帖最后由 连帅帅 于 2021-6-10 16:59 编辑

给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自动跳转到支付页面。建议Chrome浏览器,F12查看源代码,选择console把脚本代码粘贴,按回车即可!
var nIntervId;
var tjjsId;
var submitDdId;
var tjbbId;
var count = 1;
var tjcs = 1;
var goDate;
function go() {
    console.log("-------代码执行----第【" + count + "】次");
    count++;
    if (Date.now() >= new Date("2021-06-02 15:59:59")) {
      if ($(parent.frames.document).find("#btn-reservation").length == 1) {
            var sku = window.location.pathname.replace(/[^0-9]/ig, "");
            var ref = "//cart.jd.com/gate.action?pid=" + sku + "&pcount=1&ptype=1";
            console.log("https:" + ref);
            $(parent.frames.document).find("#btn-reservation").attr("href", ref);//
            parent.frames.document.getElementById("btn-reservation").click();
            return;
      }
      if ($(parent.frames.document).find("#btn-reservation").length == 1) {
            parent.frames.document.getElementById("btn-reservation").click();
            return;
      }
      if ($(parent.frames.document).find("#InitCartUrl").length == 1) {
            parent.frames.document.getElementById("InitCartUrl").click();
            return;
      }
      if ($(parent.frames.document).find("#GotoShoppingCart").length == 1) {
            rewrite('https://cart.jd.com/cart_index/');
      }
      if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
            var sku = window.location.pathname.replace(/[^0-9]/ig, "");
            $(parent.frames.document).find("input:checkbox").trigger("click");
            $(parent.frames.document).find("input:checkbox").attr("checked",true);
            parent.frames.document.getElementsByClassName("common-submit-btn").click();
      }
      if ($(parent.frames.document).find("#order-submit").length == 1) {
            //parent.frames.document.getElementById("order-submit").click();
            clearInterval(nIntervId);
            tjbbId = setInterval("tjbb()", 250);
      }
       if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
            var sku = window.location.pathname.replace(/[^0-9]/ig, "");
            $(parent.frames.document).find("input:checkbox").trigger("click");
            $(parent.frames.document).find("input:checkbox").attr("checked",true);
            if($(parent.frames.document).find("input:checkbox").checked == true){
                clearInterval(nIntervId);
                tjjsId = setInterval("tjjs()", 300);
                parent.frames.document.getElementsByClassName("common-submit-btn").click();
            }
      }
      if ($(parent.frames.document).find(".index-channel-notice-paylogo").length == 1) {
            clearInterval(nIntervId);
      }
      if ($(parent.frames.document).find(".dialog-close-notitle").length == 1) {
            parent.frames.document.getElementsByClassName("dialog-close-notitle").click();
      }
    }
}

function tjbb() {
    if ($(parent.frames.document).find(".plate-form-word").length == 1) {
      clearInterval(tjbbId);
    }else if ($(parent.frames.document).find("#order-submit").length == 1) {
      parent.frames.document.getElementById("order-submit").click();
    }
}
function tjjs() {
    console.log("-----去结算提交次数【" + tjcs + "】次-----")
    tjcs++;
    if ($(parent.frames.document).find(".dialog-close-notitle").length == 1) {
      console.log("------取消至少选一件------");
      parent.frames.document.getElementsByClassName("dialog-close-notitle").click();
    }
    console.log("------尝试提交------");
    var sku = window.location.pathname.replace(/[^0-9]/ig, "");
    if($(parent.frames.document).find("input:checkbox").checked == true){
      parent.frames.document.getElementsByClassName("common-submit-btn").click();
    }else if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
      $(parent.frames.document).find("input:checkbox").trigger("click");
      $(parent.frames.document).find("input:checkbox").attr("checked",true);
    }
    if ($(parent.frames.document).find(".checkout-submit").length == 1) {
      console.log("------去结算已提交------");
      clearInterval(tjjsId);
      submitDdId = setInterval("submitDd()", 500);
    }

}
function submitDd() {
    if ($(parent.frames.document).find(".plate-form-word").length == 1) {
      clearInterval(submitDdId);
    }else if ($(parent.frames.document).find("#order-submit").length == 1) {
      parent.frames.document.getElementById("order-submit").click();
      clearInterval(submitDdId);
    }
}
function rewrite(current) {
    fr4me = '<frameset cols=\'*\'>\n<frame src=\'' + current + '\'/>';
    fr4me += '</frameset>';
    with (document) { write(fr4me); void (close()) };
}

//注入sql
rewrite(window.location.href);
var d = prompt("请输入抢购开始时间", "2021-06-02 15:59:59");
var pl = prompt("请输入刷新频率【1000为一秒,数值多少合适可以自己测试】", "300");
if (d) {
    try {
      goDate = new Date(d);
      nIntervId = setInterval("go()", pl);
    }
    catch (e) {
      alert("时间格式不正确,请使用yyyy-MM-dd hh:mm:ss格式,精确到秒, 请重试");
    }
}else {
    alert("请重试");

}

NingXIU 发表于 2021-6-14 08:33:21

py学习

haoliang9324 发表于 2021-6-15 10:06:21

连帅帅 发表于 2021-6-10 16:57
给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自 ...

var nIntervId; 报错

是需要安装模块吗?

连帅帅 发表于 2021-6-15 11:17:05

haoliang9324 发表于 2021-6-15 10:06
var nIntervId; 报错

是需要安装模块吗?

不需要的,你在浏览器上登录你的京东,然后找到你要抢购的商品,点进去,按F12,选择Console,把代码贴进去就可以了,记得改时间,比如中午十二点的开始抢购,那你就把时间改为中午11点59分59秒。{:10_297:}

kaiyong 发表于 2022-12-18 23:24:27

连帅帅 发表于 2021-6-10 16:57
给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自 ...

请问现在还能用吗?
页: [1]
查看完整版本: 京东抢购代码求助