一.介绍

PhantomJS是一个基于WebKit的JavaScript API,它使用QtWebKit作为它核心浏览器的功能,使用WebKit来编译解释执行JavaScript代码,任何你可以在基于WebKit浏览器做的事情,它都能做到。Selenium是一个用于Web应用自动化程序测试的工具,可以让浏览器自动加载页面,获取需要的数据,Selenium自己不带浏览器,所以需要和PhantomJS、FireFox、Chrome等浏览器结合。

二.登录流程

1.切换登录方式

查找claaa=div.login-tab.login-tab-r的元素,发送click事件,class标签在selenium中需要使用"元素类型.class1.class2"把空格进行替换。

2.输入用户名密码并登录

查找id=loginname的元素,调用send_keys输入用户名;查找id=nloginpwd的元素,调用send_keys输入密码;查找id=loginsubmit的元素,发送click事件。

3.用户签到

打开http://vip.jd.com/home.html页面,查找id=signIn的元素,发送click事件。

4.店内签到

打开https://bean.jd.com/myJingBean/list页面,使用xpath查找//ul[@class='bean-shop-list']/li/a[@class='s-btn']元素,查找href属性,并打开页面;在新打开的页面中查找class=a.d-header-icon.unsigned的元素,并发送click事件。

三.完整代码

新建jd.py文件

#!/usr/bin/env python3#-*- coding: utf-8 -*-

from selenium importwebdriverimporttimeimportsysimportio

sys.stdout= io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')#点击页面元素

defmy_click(browser, type, value):if type == "id":

element=browser.find_element_by_id(value)elif type == "name":

element=browser.find_element_by_name(value)elif type == "class":

element=browser.find_element_by_css_selector(value)else:print("Can't find element")returnelement.click()

time.sleep(3)#用户签到

defmy_login(browser):

browser.get("https://passport.jd.com/uc/login")

time.sleep(3)

my_click(browser,"class", "div.login-tab.login-tab-r")

loginname= browser.find_element_by_id("loginname")

nloginpwd= browser.find_element_by_id("nloginpwd")

loginname.send_keys("username")

nloginpwd.send_keys("password")

my_click(browser,"id", "loginsubmit")print("login success")

time.sleep(3)#把页面保存为图片,验证是否登录成功

browser.get_screenshot_as_file("login.png")#店内签到

defshop_sign_in(browser):print("店内签到")

browser.get("https://bean.jd.com/myJingBean/list")

time.sleep(3)

shops= browser.find_elements_by_xpath("//ul[@class='bean-shop-list']/li/a[@class='s-btn']")

urls= [s.get_attribute("href") for s inshops]for url inurls:try:

browser.get(url)

time.sleep(3)

my_click(browser,"class", "a.d-header-icon.unsigned")print("%s 签到成功" %url)except:print("%s 签到失败" %url)#用户登录

defuser_sign_in(driver):print("用户签到")

url= "http://vip.jd.com/home.html"driver.get(url)

time.sleep(3)

my_click(driver,"id", "signIn")print("%s 签到成功" %url)defmain():

browser= webdriver.PhantomJS(executable_path=r"/root/phantomjs-2.1.1-linux-x86_64/bin/phantomjs")#最大化浏览器窗口

browser.maximize_window()

my_login(browser)

user_sign_in(browser)

shop_sign_in(browser)

browser.quit()if __name__ == "__main__":

main()

四.验证程序

环境:Python(3.5.2)

1.下载Phantomjs

2.运行脚本

root@710bd3e4deb6:~# python3 jd.py

3.登录https://bean.jd.com/myJingBean/list查看是否签到成功

五.异常处理

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

输出字符编码格式错误,修改编码格式

importsysimportio

sys.stdout= io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

python京东自动签到_京东商城自动签到领京豆相关推荐

  1. python京东自动签到_京东星推官自动领取京豆python脚本和软件

    前两天发了个时光机的脚本,有吧友发来个领京豆的活动,今天空了顺带写了下 活动差不多每天0点开始,京豆有限,差不多几分钟的时间把,每天应该可以几百豆子,可以0点去试试 活动地址:https://pro. ...

  2. python京东自动签到_Python 实现京东自动签到领京豆

    今天带大家进行模拟京东登录,并进行签到获取京豆,1000 个京豆 = 10 元,毕竟「苍蝇也是肉」,每天用脚本可以获取大概 n 个京豆,是不是一个发现了一个「发家致富」的好路子? 废话不多说,下面开始 ...

  3. Python 实现京东自动登录领京豆

    今天带大家进行模拟京东登录,并进行签到获取京豆,1000 个京豆 = 10 元,是不是一个发现了一个「发家致富」的好路子? 废话不多说,下面开始正题. 整体流程如下: 京东自动签到流程 1 模拟登录 ...

  4. python autojs_自动化篇 | 手把手教你使用 AutoJS 自动领京豆

    AutoJS 一个支持无障碍服务的 Android 平台上的 JavaScript IDE.Autojs 主要是基于安卓系统的无障碍服务,实现自动化操控和监控手机信息处理. 特性: 由无障碍服务实现的 ...

  5. autojs获取id_手把手教你使用AutoJS自动领京豆

    AutoJS 一个支持无障碍服务的Android平台上的JavaScript IDE.Autojs主要是基于安卓系统的无障碍服务,实现自动化操控和监控手机信息处理. 特性: 由无障碍服务实现的简单易用 ...

  6. AutoJS4.1.0实战教程---京东领京豆

    虽然给的少,但是咱也不放过将薅羊毛大业进行到底.其实有一天我也忘记了,喝酒误事啊,千秋大事一壶茶,万丈红尘三杯酒.少喝酒...看看截图,有图有真像是吧! 代码: auto.waitFor(); app ...

  7. 玩转Redis-京东签到领京豆如何实现

    <玩转Redis>系列文章主要讲述Redis的基础及中高级应用,文章基于Redis 5.0.4+.本文是<玩转Redis>系列第[8]篇,最新系列文章请前往公众号"z ...

  8. 京东批量下单_京东快递发件指南!

    亲爱的同学们: 好消息来啦?2020年11月4日起,京东快递入驻北分办公区啦~! 因 为 有 你 甜 到 心 里 ∨ 一.大家可自行选择从京东官网or京东公众号下单即可(网址见下流程图): 二.京东只 ...

  9. 入会领京豆Python脚本

    要求 Python 3.7+ 需要 Chrome.Edge(Chromium).FireFox 等支持Selenium的浏览器 系统支持Mac.Linux.Windows支持webdriver的版本 ...

最新文章

  1. FPGA之道(33)Verilog数据类型
  2. SQL必知必会——插入数据(十五)
  3. HDU-1102-Constructing Roads(并查集)
  4. Flutter修仙传第二章:路由详解
  5. 【Elasticsearch】es 一个数据精度引发的血案
  6. python基础篇--变量和简单的数据类型(上)
  7. 未解决:lrelease: could not exec ‘/usr/lib/qt5/bin/lrelease‘: No such file or directory
  8. 后台传一个状态值,如果在vue设置成正常停用?
  9. 通用商品后端管理系统
  10. 《松本行弘的程序世界》精彩书摘
  11. 后缀为.vep文件转换成.mp4文件
  12. 三个月追求金牛全过程(图
  13. Scanner的close()方法的使用以及Scanner应该如何关闭
  14. 米3从android6降回4,从5G到4G,三个月的思考后我从小米9 pro降级到了小米9T pro
  15. c语言 (3×3)矩阵转置
  16. Chapter4.2:根轨迹法
  17. ffmpeg批量切片视频
  18. Ubuntu 11.04安装pcsx2模拟器简明过程
  19. Spring mvc基于注解自定义servlet
  20. 万字干货,Python语法大合集,一篇文章带你入门

热门文章

  1. YOLOv5改进——使用深度可分离卷积轻量化C3
  2. 3D LUT Creator 软件+教程
  3. 地税因特网办税服务系统打不开报表
  4. SELECT语句执行顺序
  5. 日常视频处理小记-纵横比问题
  6. 【塔望方法论】塔望3W消费战略 - UA研究法
  7. iOS armv7,armv7s, arm64
  8. Hdp + Ambari 本地源安装
  9. 直播带货 ‖ 如何让直播间人气爆棚?
  10. ftp服务器架设与维护,FTP服务器的架设至安全维护大全.doc