zoukankan      html  css  js  c++  java
  • 91家纺网,登录代码

    import re
    import os
    import base64
    #import ast
    from urllib import parse
    from datetime import datetime
    import cv2

    import random 
    import requests
    import time
    import redis
    from scrapy import Selector

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from PIL import Image

    domain = "http://www.91jf.com/"
    domain_log = "http://www.91jf.com/default.php?url=member&act=memberinfo"
    #IMAGE_URL = "http://www.91jf.com/default.php?act=code"

    chrome_options = webdriver.ChromeOptions()
    path = r'D:project_91jiafangwanchromedriver.exe'
    browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)


    def get_captcha(filename):
        """
        访问验证码解析API,解析图片验证码
        :param filename:
        :return:
        """
        CAPTCHA_PATH = 'http://192.168.3.9:8888/captcha'
        with open(filename, "rb") as f:
            image_base64 = base64.b64encode(f.read())
        payload = {'image': image_base64}
        while True:
            response = requests.request("POST", CAPTCHA_PATH, data=payload)
            if response.status_code == 200:
                if response.json().get('code') == 200:
                    return response.json().get('text')
                else:
                    print(response.json().get('err'))
                    return '1234'
            else:
                print('验证码网络无法访问,请确认网络情况')
                time.sleep(10)

    def log_in():
        browser.get(domain_log)
        browser.maximize_window()

        slider = browser.find_element_by_xpath("//img[@onclick='show_user_login()']")
        ActionChains(browser).click(slider).perform()
        ActionChains(browser).release().perform()

        #IMAGE_URL = "http://www.91jf.com/default.php?act=code"
        # 截取当前网页并放到D盘下命名为printscreen,该网页有我们需要的验证码
        browser.save_screenshot('./image/printscreen.png') 
        img_ele = browser.find_element_by_xpath("//img[@src='default.php?act=code']")
        location = img_ele.location  # 获取验证码x,y轴坐标
        size = img_ele.size  # 获取验证码的长宽
        rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']),
              int(location['y'] + size['height']))  # 写成我们需要截取的位置坐标
        i = Image.open("./image/printscreen.png")  # 打开截图
        frame4 = i.crop(rangle)  # 使用Image的crop函数,从截图中再次截取我们需要的区域
        frame4 = frame4.convert('RGB')
        frame4.save('./image/save.jpg') # 保存我们接下来的验证码图片 进行打码

        username = "18206275210"
        password = "czx0711."

        username_ele = browser.find_element_by_xpath("//input[@name='username']")
        password_ele = browser.find_element_by_xpath("//input[@name='password']")

        username_ele.send_keys(username)
        password_ele.send_keys(password)

        time.sleep(2)
        #request_download(IMAGE_URL)

        image = cv2.imread('./image/save.jpg')
        cv2.imshow("image",image)
        cv2.waitKey(0)
        
        pic = get_captcha('./image/save.jpg')
        pic_ele = browser.find_element_by_xpath("//input[@name='t_code']")
        pic_ele.send_keys(pic)
        
        time.sleep(2)

        slider = browser.find_element_by_xpath("//div[@class='login_but']")
        ActionChains(browser).click(slider).perform()
        ActionChains(browser).release().perform()


    def request_download(IMAGE_URL):
        os.makedirs('./image/', exist_ok=True)
        import requests
        r = requests.get(IMAGE_URL)
        with open('./image/img'+ '0' + '.jpg', 'wb') as f:
            f.write(r.content) 
    '''
    for i in range(1000):
        request_download(str(i))
        time.sleep(random.randint(1,4))
        '''
    log_in()

    '''
    image = cv2.imread('./image/img0.jpg')
    cv2.imshow("image",image)
    cv2.waitKey(0)
    '''
  • 相关阅读:
    day 17
    day 16
    信息系统项目管理师 教程学习 第一章
    服务器安全防护
    少有人走的路
    Python文件学习
    测试新文章
    测试
    python基础 一、 数值类型、序列类型和散列类型
    apache No input filespecified
  • 原文地址:https://www.cnblogs.com/dog-and-cat/p/13321163.html
Copyright © 2011-2022 走看看