python京东自动签到领金豆_github京东自动签到
大家好,又见面了,我是你们的朋友全栈君
一.介绍
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′)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193004.html原文链接:https://javaforall.cn
相关文章
- 【Jenkins 插件】使用 github 插件从 GitHub 上拉取项目代码
- python re.compile() 详解——Python正则表达式「建议收藏」
- Python获取时间戳_python爬虫时间戳
- python的进制转换器,Python进制转换[通俗易懂]
- 简述python变量的命名规则_Python 变量命名规则
- python截图识别文字_Python文字截图识别OCR工具实例解析
- unboundlocalerror python_Python问题:UnboundLocalError: local variable ‘xxx’ referenced before assignme
- python socket recvfrom_Python:socket.recvfrom()不返回任何地址
- python基础(9)增强型赋值与使用普通赋值的区别
- 【说站】python链表实现左移和右移
- 【说站】python WSGI规范是什么
- 基于LSTM的股票预测模型_python实现_超详细
- 《利用Python进行数据分析》第3版
- Python 反转字符串_python输出字符串
- PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像|附代码数据
- Python采集网易财经股票行情排行榜数据
- Pywirt:一款基于Python的Windows安全应急响应工具
- Python图像处理:频域滤波降噪和图像增强
- python-异常处理和错误调试-异步IO程序的调试方法(二)
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(二)
- python_day18-19_面向对象编程1详解编程语言
- python-dict详解编程语言
- Python MRO方法解析顺序详解
- Python结合MySQL实现信息交互(python与mysql交互)
- Linux查看Python版本的有效方法(linux查看python版本)
- Python与MongoDB 无缝连接(python连接mongodb)
- CX Oracle版本:让Python与Oracle更有效地开发(cxoracle版本)
- Linux环境下Python开发的历程(linux与python)
- Python实现MySQL数据库的读取(python读取mysql)
- 深入理解Python代码优化详解