基於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

基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

BeautifulSoup模塊的名稱是bs4(表示 BeautifulSoup第4版),用於從HTML頁面(網頁源碼)中提取信息(比正則表達式要好很多)。

安裝方法:在命令行中運行pip install beautifulsoup4;

在Python中調用:from bs4 import BeautifulSoup

基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

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項可以直接獲得元素的路徑。

基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

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個

  • ....
  • ,我們的思路是從這9個
  • ....
  • 源碼中獲得店鋪的鏈接地址,而後進入店鋪頁面,在店鋪頁面中,通過 尋找有“簽到”兩個字的元素進行點擊(browser.find_element_by_link_text('簽到').click())。

    基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

    簽到後的狀態

    基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

    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()。

    基於Python3開發的自動簽到拿京豆軟件-1.源碼及調試過程

    最後退出瀏覽器。


    分享到:


    相關文章: