鱼C论坛

 找回密码
 立即注册
查看: 2777|回复: 18

[已解决]各路高手,碰到一个实际工作中的问题,探讨一下用python能否实现自动化

[复制链接]
发表于 2021-3-11 09:12:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个登陆程序,我需要的是 用一台电脑 登陆60+个账号,密码,就是登陆一个,退出 再登陆下一个,再继续退出
这个用人工做 会很麻烦的  各路高手能否指点一下  代码能否实现
最佳答案
2021-3-11 16:35:02
用win32API 不就好了吗?


  1. import win32api
  2. import time
  3. #鼠标移动
  4. def mouse_move(x,y):
  5.     win32api.SetCursorPos([x,y])

  6. #鼠标点击,默认左键
  7. def mouse_click(click_type="left"):
  8.     if click_type=="left":
  9.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)   
  10.     else:
  11.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  12.     time.sleep(0.01)

  13. #鼠标双击击,默认左键
  14. def mouse_double_click(click_type="left"):
  15.     if click_type=="left":
  16.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  17.         time.sleep(0.01)
  18.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

  19.     else:
  20.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  21.         time.sleep(0.01)
  22.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  23.     time.sleep(0.01)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-11 09:20:52 | 显示全部楼层
代码当然可以了,一次登录60个都没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:27:52 | 显示全部楼层
pytho 发表于 2021-3-11 09:20
代码当然可以了,一次登录60个都没问题

具体应该怎么做呢,需要用到哪个模块
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:30:18 | 显示全部楼层
浏览器账号登录的话可以用webdriver

程序登录的话可以尝试pywin32+pyautogui
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:32:17 | 显示全部楼层
wp231957 发表于 2021-3-11 09:27
具体应该怎么做呢,需要用到哪个模块

requests模块就可以了
大概这个样子

  1. import requests

  2. headers = {
  3.         "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36",
  4.         "Accept": "application/json, text/plain, */*",
  5.         'Content-Type': 'application/x-www-form-urlencoded',
  6.         'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
  7. }
  8. def login(name,password):
  9.         url = 'https://xxxx'
  10.         data = {
  11.                 "password":password,
  12.                 "name":name

  13.         }
  14.          
  15.         res = requests.post(url,data,headers = headers)
  16.         print(res.txt)

  17. def main():
  18.         password = '123456'
  19.         with open('用户名.txt','r') as f:
  20.                 names = f.readlines()
  21.                 for u in names:
  22.                         u = (u.strip("\n"))
  23.                        
  24.                         login(u, password)
  25. if __name__ == '__main__':
  26.         main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:33:34 | 显示全部楼层
wp231957 发表于 2021-3-11 09:27
具体应该怎么做呢,需要用到哪个模块

登录的话requests模块就够了
弄了一个示例代码,不过在审核中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:39:14 | 显示全部楼层
pytho 发表于 2021-3-11 09:33
登录的话requests模块就够了
弄了一个示例代码,不过在审核中

不是浏览器登陆,是程序  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:54:49 | 显示全部楼层
wp231957 发表于 2021-3-11 09:39
不是浏览器登陆,是程序

哦哦,这个没搞过
你看看4楼的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:56:15 | 显示全部楼层
逃兵 发表于 2021-3-11 09:30
浏览器账号登录的话可以用webdriver

程序登录的话可以尝试pywin32+pyautogui

谢谢,我先搜一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 10:55:41 | 显示全部楼层
才60个都不够写代码麻烦的,直接复制粘贴不就好了么?除非是每天每次都要登录
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 11:05:59 | 显示全部楼层
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件
使用循环:
    1. 复制账号到粘贴板, pyautogui 点击输入框,粘贴
    2.复制密码,重复 1步骤。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 13:07:00 | 显示全部楼层
Cool_Breeze 发表于 2021-3-11 11:05
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件

我总感觉pyautogui库和pyperclip库有bug
每一步都得sleep 不然会不按照顺序来 下面的代码会先于上面的代码执行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:23:08 | 显示全部楼层
kogawananari 发表于 2021-3-11 13:07
我总感觉pyautogui库和pyperclip库有bug
每一步都得sleep 不然会不按照顺序来 下面的代码会先 ...

没有遇到过。。可能我用的少吧!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:32:00 From FishC Mobile | 显示全部楼层
Cool_Breeze 发表于 2021-3-11 11:05
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件

如果是安全性高点的密码输入框可能会粘贴不了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:35:15 | 显示全部楼层
hrp 发表于 2021-3-11 14:32
如果是安全性高点的密码输入框可能会粘贴不了

只有中文是需要粘贴的  键盘上有键可以直接敲字母的不需要粘贴
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:30:24 | 显示全部楼层
按键精灵,可以了解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:35:02 | 显示全部楼层    本楼为最佳答案   
用win32API 不就好了吗?


  1. import win32api
  2. import time
  3. #鼠标移动
  4. def mouse_move(x,y):
  5.     win32api.SetCursorPos([x,y])

  6. #鼠标点击,默认左键
  7. def mouse_click(click_type="left"):
  8.     if click_type=="left":
  9.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)   
  10.     else:
  11.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  12.     time.sleep(0.01)

  13. #鼠标双击击,默认左键
  14. def mouse_double_click(click_type="left"):
  15.     if click_type=="left":
  16.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  17.         time.sleep(0.01)
  18.         win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

  19.     else:
  20.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  21.         time.sleep(0.01)
  22.         win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
  23.     time.sleep(0.01)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 16:39:32 From FishC Mobile | 显示全部楼层
z5560636 发表于 2021-3-11 16:35
用win32API 不就好了吗?

输入呢,向用户名框和密码框输入咋弄
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:43:06 | 显示全部楼层
wp231957 发表于 2021-3-11 16:39
输入呢,向用户名框和密码框输入咋弄
  1. from config import VK_CODE
  2. import win32api

  3. def key_input( input_words=''):
  4.     for word in input_words:
  5.         win32api.keybd_event(VK_CODE[word], 0, 0, 0)
  6.         win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
  7.         time.sleep(0.1)

  8. def key_even( input_key):
  9.     win32api.keybd_event(VK_CODE[input_key], 0, 0, 0)
  10.     time.sleep(0.01)
  11.     win32api.keybd_event(VK_CODE[input_key], 0, win32con.KEYEVENTF_KEYUP, 0)
  12.     time.sleep(0.3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-18 00:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表