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"
        img = browser.find_element_by_xpath("//img[@src='default.php?act=code']")

        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/img0.jpg')
        cv2.imshow("image",img)
        cv2.waitKey(0)
        
        pic = get_captcha('./image/img0.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)
    '''
  • 相关阅读:
    第40次全国计算机等级考试监考
    [再寄小读者之数学篇](2014-07-27 打印错误吧)
    日积月累的名典[2014-10-7]
    2014年全球“高被引科学家”数学类名单
    年轻尼姑的19句话
    PostgreSQL的 initdb 源代码分析之十六
    PostgreSQL的 initdb 源代码分析之十五
    PostgreSQL的 initdb 源代码分析之十四
    PostgreSQL的 initdb 源代码分析之十三
    PostgreSQL的 initdb 源代码分析之十二
  • 原文地址:https://www.cnblogs.com/dog-and-cat/p/13307084.html
Copyright © 2011-2022 走看看