【基于Python3开发的自动签到拿京豆软件-1.源码及调试过程】

Python与机器学习 徐 自远 777℃

【基于Python3开发的自动签到拿京豆软件-1.源码及调试过程】

京东网站上,在京东会员首页,有每日签到会送京豆;在我的京东-我的京豆页,有进店签到领京豆;在我的京豆-流量加油站页,有签到领流量。我们用Python来开发写程序,实现每天自动领京豆和流量。主要用到Python,selenium模块和 BeautifulSoup模块。

一、源码

from bs4 import BeautifulSoup

from selenium import webdriver

import time

browser = webdriver.Firefox()#用火狐浏览器

browser.get(‘http://vip.jd.com/home.html’)#打开登录页面

browser.find_element_by_link_text(‘账户登录’).click()

browser.find_element_by_id(‘loginname’).send_keys(‘你的用户名’)

browser.find_element_by_id(‘nloginpwd’).send_keys(‘密码’)

browser.find_element_by_xpath(‘//*[@id=”loginsubmit”]’).click()

time.sleep(1)

try:

browser.find_element_by_class_name(‘sign-in’).click()

print(‘签到成功’)

except:

print(‘不能重复签到,签到失败’)

#print(browser.current_window_handle)调试程序时查看当前的网页句柄

browser.get(‘http://bean.jd.com/myJingBean/list’)

time.sleep(1)

#print(browser.current_window_handle)

#handles = browser.window_handles

#print(handles)

soup = BeautifulSoup(browser.page_source)

ylink =soup.find_all(class_ = ‘s-btn’)

#print(ylink)

for link in ylink:

#print(link.get(‘href’))

browser.get(link.get(‘href’))#获得网址并直接打开

time.sleep(1)

browser.find_element_by_link_text(‘签到’).click()

time.sleep(1)

time.sleep(1)

browser.get(‘http://datawallet.jd.com/profile.html’)

time.sleep(1)

browser.find_element_by_class_name(‘btn-sign’).click()

time.sleep(1)

browser.quit()

二、开发环境的搭建:

  1. 安装Python3(自行搜索安装,这里不作介绍);
  2. 安装selenium模块和 BeautifulSoup模块

selenium模块让Python直接控制浏览器,实际点击链接,填写登录信息,几乎就像是有一个人类用户在与页面交互。与Requests和BeautifulSoup相比,selenium允许你用高级的多的方式与网页交互。

安装方法:pip install selenium;

在Python中调用:from selenium import webdriver

BeautifulSoup模块的名称是bs4(表示 BeautifulSoup第4版),用于从HTML页面(网页源码)中提取信息(比正则表达式要好很多)。

安装方法:在命令行中运行pip install beautifulsoup4;

在Python中调用:from bs4 import BeautifulSoup

3.安装火狐浏览器(自行下载最新版安装),下载并配置火狐浏览器驱动 geckodriver

geckodriver的下载链接:https://github.com/mozilla/geckodriver/releases

将下载好的geckodriver解压后,将geckodriver.exe放在安装过火狐浏览器的目录下,本机在C:Program Files (x86)Mozilla Firefox;

三、需求分析

第一步,打开浏览器,进入京东登录页面,自动登录;

第二步,签到页点击签到;

第三步,进店签到领京豆栏获得店铺的网址,进入相应店铺点击签到;

第四步,进入签到领流量页面,点击签到领流量。

第一步:

from bs4 import BeautifulSoup

from selenium import webdriver

import time

browser = webdriver.Firefox()#用火狐浏览器

browser.get(‘http://vip.jd.com/home.html’)#打开登录页面

browser.find_element_by_link_text(‘账户登录’).click()

browser.find_element_by_id(‘loginname’).send_keys(‘你的用户名’)

browser.find_element_by_id(‘nloginpwd’).send_keys(‘密码’)

browser.find_element_by_xpath(‘//*[@id=”loginsubmit”]’).click()

第二步:

browser.find_element_by_class_name(‘sign-in’).click()

  1. 火狐浏览器有一个功能很方便,定位页面元素,鼠标放在要定位的元素上,右键单击,选择(查看元素),即可看到相应元素的网页源码,在相应的 网页代码上右键单击-复制-Xpath项可以直接获得元素的路径。

2.selenium模块在页面中寻找元素的方法browser.find_element_by_…;browser.find_elements_by_…

(此处自行搜索学习)。需要注意的一点是browser.find_elements_by_…返回的是一个列表,不能使用.click()进行点击。

第三步:

进入我的京东-我的京豆页面,browser.get(‘http://bean.jd.com/myJingBean/list’);

使用BeautifulSoup模块读取当前页面的网页源码,soup = BeautifulSoup(browser.page_source);

通过火狐浏览器的查看元素功能,仔细看寻找一下我们要点击进入的各个店铺的链接代码,我们发现,总共有9个店铺,在网页中的代码是9个<li>….</li>,我们的思路是从这9个<li>….</li>源码中获得店铺的链接地址,而后进入店铺页面,在店铺页面中,通过 寻找有“签到”两个字的元素进行点击(browser.find_element_by_link_text(‘签到’).click())。

签到后的状态

ylink =soup.find_all(class_ = ‘s-btn’)

#print(ylink)

for link in ylink:

#print(link.get(‘href’))

browser.get(link.get(‘href’))#获得网址并直接打开

time.sleep(1)

browser.find_element_by_link_text(‘签到’).click()

time.sleep(1)

第四步:

进入我的京东-流量加油站页面,browser.get(‘http://datawallet.jd.com/profile.html’);

通过查看网页源代码,我们通过class name定位元素,browser.find_element_by_class_name(‘btn-sign’).click()。

最后退出浏览器。

http://m.toutiaocdn.cn/group/6504409089966080525/?iid=18821494449&app=news_article×tamp=1514502180&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【基于Python3开发的自动签到拿京豆软件-1.源码及调试过程】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号