splinter開發

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import os,sys,time
from splinter import Browser
import requests
from PIL import Image
from json import loads
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
from pyvirtualdisplay import Display
#12306 deepstuy="https://www.jianshu.com/p/def4f754aa6f"
#display = Display(visible=0, size=(300, 300))
#display.start()
from PyQt5 import QtWidgets, QtGui
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget();
window.show()
sys.exit(app.exec_())
quit()
headers = {
        "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
}
session = requests.session()
def getCheckImgIndex():
        url="https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand"
        response = session.get(url=url,headers=headers,verify=False)
        f=open('12306.jpg','wb')
        f.write(response.content)
        f.closed
        img=Image.open('./12306.jpg')
        img.show()
        checkindex = input('請輸入驗證碼位置,以","分割(例如2,4,6):')

        return checkindex

def postcheckImage(checkindex):
        indexs= checkindex.split(',')
        imgcentor_position = ['35,35','105,35','175,35','245,35','35,105','105,105','175,105','245,105']
        checkokList = []
        for index in indexs:
                checkokList.append(imgcentor_position[int(index)])
        checkokImgStr = ','.join(checkokList)
        checkUrl = "https://kyfw.12306.cn/passport/captcha/captcha-check"
        data =  {
                'login_site':'E',
                'ranf':'sjrand',
                'answer':checkokImgStr
        }
        response = session.post(url=checkUrl,data=data,headers=headers,verify=False)
        checkResult=loads(response.content)
        print(checkResult)
        checkcode = checkResult['result_code']
        print(checkcode,type(checkcode))
        if checkcode == '4':
                print('驗證碼提交成功!')
                return True
        else:
                print('驗證碼提交失敗!')
                return False
def login12306():
        username = input('用戶名:')
        password=input('密碼:')
        loginUrl = "https://kyfw.12306.cn/passport/web/login"
        data = {
                'username':username,
                'password':password,
                'appid':'otn'  #固定的標誌
        }
        response = session.post(url=loginUrl,data=data,headers=headers,verify=False)
        result = loads(response.content)
        print(result)
        isLoginOk = result['result_message']
        if isLoginOk== "登陸成功":
                print('登陸成功,能夠購票!')
        else:
                print('登陸失敗!')
if __name__ == '__main__':
        imgindex=getCheckImgIndex()
        check=postcheckImage(imgindex)
        login12306()
quit()
class Login(object):
        def __init__(self):
                self.name="zhb"
                self.addr="guangzhou"
        def Visit(self,url,user,password):
                browser=Browser(driver_name="chrome")
                browser.visit(url)
                time.sleep(3)
                if browser.is_element_present_by_text('登陸'):
                        print('yes,have 登陸 button')
                        browser.find_by_text('登陸').click()
                        time.sleep(3)
                        if browser.is_element_present_by_text('帳號登陸'):
                                print('yes,have 帳號登陸 button')
                                browser.find_by_text('帳號登陸').click()
                                time.sleep(3)
                                browser.find_by_id('J-userName').fill(user)
                                browser.find_by_id('J-password').fill(password)
                                time.sleep(15)
                                browser.find_by_text('當即登陸').click()
                                time.sleep(30)
my=Login()
my.Visit("https://www.12306.cn/index/index.html","18****90","*********")
相關文章
相關標籤/搜索