zoukankan      html  css  js  c++  java
  • Python有哪些神一般的蜜汁操作? 《附代码》

    有人说,“Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!”

    下载视频?我用Python;

    玩跳一跳?我用Python跳到4999分;

    撩妹子?依然用Python;

    抢红包抢火车票?没错还是Python;

    就算是整理文件,我也还是用Python……

    下面就详细跟大家分享一些Python的骚操作:

    1、Python让你不再错过抢红包

    刚过完年经历了抢红包大战的大家,是不是错过了好几个亿!?

    用黑科技Python,开发一个微信小助手,从此再也不用担心错过巨额红包啦!

    实现代码主要有两个部分:

    1、接收红包消息,直接从手机端微信获取数据比较麻烦,主流的方法都是通过微信网页版来获取。

    因为网页版的消息接口可以被抓包分析,比较容易获取和使用。

    2、发通知,最简单的通知方法就是发出声音,还嫌不够的话,可以弹个窗。

    # 打开手机微信
    poco(text='微信').click()
    #获取当前页面中所有所有群聊的名称
    群聊消息的元素标识Chat_msg = poco(name='com.tencent.mm:id/d1v').offspring('com.tencent.mm:id/b6e')
    # 获取当前页面中所有群聊的名称
    Chat_names = []
    Chat_names = list(map(lambda x: x.get_text(), Chat_msg))
    # 指定抢红包的群聊名称
    chat = input('请指定群聊名称:')
    if chat in Chat_names:
    index = Chat_names.index(chat)
    # 点击进入指定的群聊
    Chat_msg[index].click()
    在微信聊天页面中,获取当前页面中的所有消息元素。
    msg_list = poco("android.widget.ListView").children()
    # 遍历消息并查找红包
    for msg in msg_list:
    # 微信红包的标识
    LuckyMoney = msg.offspring('com.tencent.mm:id/aql')
    # 已失效红包(比如已领取、已被领完)的标识
    Invalid = msg.offspring('com.tencent.mm:id/aqk')
    # 判断红包是否有效并抢起来!
    if LuckyMoney:
    pass
    #遍历消息并查找红包
    if Invalid.exists() and (Invalid.get_text()=='已领取' or Invalid.get_text()=='已被领完'):
    print(f'红包已无效,跳过……')
    continue
    else:
    print(f'发现一个新红包,抢起来!')
    poco("com.tencent.mm:id/d1v")
    msg.click()
    click_open = poco("com.tencent.mm:id/d02")
    if click_open.exists():
    click_open.click()
    keyevent('BACK')
    #初始化程序
    from airtest.core.api import *
    auto_setup(__file__)
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)



    2、Python帮你抢火车票

    Python除了抢红包,也是抢火车票的一把好手,说不定你当年买下的黄牛贩子手里的票就是靠Python抢到的。

    大家过年回家抢票是不是巨艰辛,今年过年可以写个抢票软件啦!

    使用 Python3 抓取12306网站的 车票信息,及时提醒,自动下单。

    from splinter.browser import Browser
    from time import sleep
    import traceback


    class Buy_Tickets(object):
    # 定义实例属性,初始化
    def __init__(self, username, passwd, order, passengers, dtime, starts, ends):
    self.username = username
    self.passwd = passwd
    # 车次,0代表所有车次,依次从上到下,1代表所有车次,依次类推
    self.order = order
    # 乘客名
    self.passengers = passengers
    # 起始地和终点
    self.starts = starts
    self.ends = ends
    # 日期
    self.dtime = dtime
    # self.xb = xb
    # self.pz = pz
    self.login_url = 'https://kyfw.12306.cn/otn/login/init'
    self.initMy_url = 'https://kyfw.12306.cn/otn/index/initMy12306'
    self.ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'
    self.driver_name = 'chrome'
    self.executable_path = 'C:Python36Scriptschromedriver.exe'
    # 登录功能实现
    def login(self):
    self.driver.visit(self.login_url)
    self.driver.fill('loginUserDTO.user_name', self.username)
    # sleep(1)
    self.driver.fill('userDTO.password', self.passwd)
    # sleep(1)
    print('请输入验证码...')
    while True:
    if self.driver.url != self.initMy_url:
    sleep(1)
    else:
    break
    # 买票功能实现
    def start_buy(self):
    self.driver = Browser(driver_name=self.driver_name, executable_path=self.executable_path)
    #窗口大小的操作
    self.driver.driver.set_window_size(700, 500)
    self.login()
    self.driver.visit(self.ticket_url)
    try:
    print('开始购票...')
    # 加载查询信息
    self.driver.cookies.add({"_jc_save_fromStation": self.starts})
    self.driver.cookies.add({"_jc_save_toStation": self.ends})
    self.driver.cookies.add({"_jc_save_fromDate": self.dtime})
    self.driver.reload()
    count = 0
    if self.order != 0:
    while self.driver.url == self.ticket_url:
    self.driver.find_by_text('查询').click()
    count += 1
    print('第%d次点击查询...' % count)
    try:
    self.driver.find_by_text('预订')[self.order-1].click()
    sleep(1.5)
    except Exception as e:
    print(e)
    print('预订失败...')
    continue
    else:
    while self.driver.url == self.ticket_url:
    self.driver.find_by_text('查询').click()
    count += 1
    print('第%d次点击查询...' % count)
    try:
    for i in self.driver.find_by_text('预订'):
    i.click()
    sleep(1)
    except Exception as e:
    print(e)
    print('预订失败...')
    continue
    print('开始预订...')
    sleep(1)
    print('开始选择用户...')
    for p in self.passengers:

    self.driver.find_by_text(p).last.click()
    sleep(0.5)
    if p[-1] == ')':
    self.driver.find_by_id('dialog_xsertcj_ok').click()
    print('提交订单...')
    # sleep(1)
    # self.driver.find_by_text(self.pz).click()
    # sleep(1)
    # self.driver.find_by_text(self.xb).click()
    # sleep(1)
    self.driver.find_by_id('submitOrder_id').click()
    sleep(2)
    print('确认选座...')
    self.driver.find_by_id('qr_submit_id').click()
    print('预订成功...')
    except Exception as e:
    print(e)




    if __name__ == '__main__':
    # 用户名
    username = 'xxxx'
    # 密码
    password = 'xxx'
    # 车次选择,0代表所有车次
    order = 2
    # 乘客名,比如passengers = ['丁小红', '丁小明']
    # 学生票需注明,注明方式为:passengers = ['丁小红(学生)', '丁小明']
    passengers = ['丁彦军']
    # 日期,格式为:'2018-01-20'
    dtime = '2018-01-19'
    # 出发地(需填写cookie值)
    starts = '%u5434%u5821%2CWUY' #吴堡
    # 目的地(需填写cookie值)
    ends = '%u897F%u5B89%2CXAY' #西安

    # xb =['硬座座']
    # pz=['成人票']


    Buy_Tickets(username, password, order, passengers, dtime, starts, ends).start_buy()

    3、Python帮你选房子

    过完年很多朋友要开始租房,自己一个个晒一个个查看是不是太累?

    那就写个Python脚本吧,爬取某租房网站的房源信息,利用高德的 js API 在地图上标出房源地点,划出距离工作地点1小时内可到达的范围。

    对比租金等,轻轻松松选出最适合的房子。

    代码


    链家的房租网站
    两个导入的包
    1.requests 用来过去网页内容
    2.BeautifulSoup
    import time
    import pymssql
    import requests
    from bs4 import BeautifulSoup
    # https://wh.lianjia.com/zufang/
    #获取url中下面的内容
    def get_page(url):
    responce = requests.get(url)
    soup = BeautifulSoup(responce.text,'lxml')
    return soup
    #封装成函数,作用是获取列表下的所有租房页面的链接,返回一个链接列表
    def get_links(url):
    responce = requests.get(url)
    soup = BeautifulSoup(responce.text,'lxml')
    link_div = soup.find_all('div',class_ = 'pic-panel')
    links = [div.a.get('href') for div in link_div]
    return links
    #收集一个房子的信息
    def get_house_info(house_url):
    soup = get_page(house_url)
    price = soup.find('span',class_='total').text
    unit = soup.find('span',class_= 'unit').text[1:-1]
    area = soup.find('p', class_ = 'lf').text
    house_info= soup.find_all('p',class_ = 'lf')
    area = house_info[0].text[3:] #字符串切片工具
    layout = house_info[1].text[5:]
    info={
    '价格':price,
    '单位':unit,
    '面积':area,
    '户型':layout
    }
    return info
    #链接数据库
    server="192.168.xx.xx" #换成自己的服务器信息
    user="liujiepeng"
    password="xxxxx" #自己的数据库用户名和密码
    conn=pymssql.connect(server,user,password,database="house")
    def insert(conn,house):
    #sql_values = values.format(house['价格'],house['单位'],house['面积'],
    #house['户型'])
    sql = "insert into [house].dbo.lianjia(price,unit,area,layout)values('%s','%s','%s','%s')"%(house["价格"],house["单位"],house["面积"],house["户型"])
    print(sql)
    cursor = conn.cursor() #游标,开拓新的窗口
    #cursor1 = conn.cursor()
    cursor.execute(sql) #执行sql语句
    conn.commit() #提交 ,更新sql 语句
    links = get_links('https://wh.lianjia.com/zufang/')
    count = 1
    for link in links:
    #time.sleep(2)
    print('获取一个数据成功')
    house = get_house_info(link)
    insert(conn,house)
    print("第%s个数据,存入数据库成功!"%(count))
    count = count+1
    #print(house["价格"],end=' ')

    4、Python找回女神撤回的消息

    除了这些日常操作,麦教授说几个你想不到的吧。

    当自己一直喜欢的女神发给自己一个消息的时候,还没来得及看,就撤回了。

    是不是自己在心中"YY",她是不是发了什么,然后你问她的时候,她却说没什么。

    学会Python,你可以做一个程序,把私聊撤回的信息可以收集起来并发送到个人微信的文件传输助手。

     

    5、Python自己写小游戏

    用Python写几个小游戏玩玩也不过是几十行代码的事,比如写个贪吃蛇!

    还记得之前火爆一时的跳一跳,如果你早点学会Python,就可以常年占据排行榜第1了,还是全自动的效果,很有趣!

    跳一跳代码:

    from __future__ import print_function

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
    import math
    import time
    import os
    import cv2
    import datetime

    scale = 0.25

    template = cv2.imread('character.png')
    template = cv2.resize(template, (0, 0), fx=scale, fy=scale)
    template_size = template.shape[:2]


    def search(img):
    result = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

    cv2.rectangle(img, (min_loc[0], min_loc[1]), (min_loc[0] + template_size[1], min_loc[1] + template_size[0]), (255, 0, 0), 4)

    return img, min_loc[0] + template_size[1] / 2, min_loc[1] + template_size[0]

    def pull_screenshot():
    filename = datetime.datetime.now().strftime("%H%M%S") + '.png'
    os.system('mv autojump.png {}'.format(filename))
    os.system('adb shell screencap -p /sdcard/autojump.png')
    os.system('adb pull /sdcard/autojump.png .')

    def jump(distance):
    press_time = distance * 1.35
    press_time = int(press_time)
    cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time)
    print(cmd)
    os.system(cmd)

    def update_data():
    global src_x, src_y

    img = cv2.imread('autojump.png')
    img = cv2.resize(img, (0, 0), fx=scale, fy=scale)

    img, src_x, src_y = search(img)
    return img


    fig = plt.figure()
    index = 0

    # pull_screenshot()
    img = update_data()

    update = True
    im = plt.imshow(img, animated=True)


    def updatefig(*args):
    global update

    if update:
    time.sleep(1)
    pull_screenshot()
    im.set_array(update_data())
    update = False
    return im,

    def onClick(event):
    global update
    global src_x, src_y

    dst_x, dst_y = event.xdata, event.ydata

    distance = (dst_x - src_x)**2 + (dst_y - src_y)**2
    distance = (distance ** 0.5) / scale
    print('distance = ', distance)
    jump(distance)
    update = True


    fig.canvas.mpl_connect('button_press_event', onClick)
    ani = animation.FuncAnimation(fig, updatefig, interval=5, blit=True)
    plt.show()


    贪吃蛇代码:

    #!/usr/bin/env python
    import pygame,sys,time,random
    from pygame.locals import *
    # 定义颜色变量
    redColour = pygame.Color(255,0,0)
    blackColour = pygame.Color(0,0,0)
    whiteColour = pygame.Color(255,255,255)
    greyColour = pygame.Color(150,150,150)

    # 定义gameOver函数
    def gameOver(playSurface):
    gameOverFont = pygame.font.Font('arial.ttf',72)
    gameOverSurf = gameOverFont.render('Game Over', True, greyColour)
    gameOverRect = gameOverSurf.get_rect()
    gameOverRect.midtop = (320, 10)
    playSurface.blit(gameOverSurf, gameOverRect)
    pygame.display.flip()
    time.sleep(5)
    pygame.quit()
    sys.exit()

    # 定义main函数
    def main():
    # 初始化pygame
    pygame.init()
    fpsClock = pygame.time.Clock()
    # 创建pygame显示层
    playSurface = pygame.display.set_mode((640,480))
    pygame.display.set_caption('Raspberry Snake')

    # 初始化变量
    snakePosition = [100,100]
    snakeSegments = [[100,100],[80,100],[60,100]]
    raspberryPosition = [300,300]
    raspberrySpawned = 1
    direction = 'right'
    changeDirection = direction
    while True:
    # 检测例如按键等pygame事件
    for event in pygame.event.get():
    if event.type == QUIT:
    pygame.quit()
    sys.exit()
    elif event.type == KEYDOWN:
    # 判断键盘事件
    if event.key == K_RIGHT or event.key == ord('d'):
    changeDirection = 'right'
    if event.key == K_LEFT or event.key == ord('a'):
    changeDirection = 'left'
    if event.key == K_UP or event.key == ord('w'):
    changeDirection = 'up'
    if event.key == K_DOWN or event.key == ord('s'):
    changeDirection = 'down'
    if event.key == K_ESCAPE:
    pygame.event.post(pygame.event.Event(QUIT))
    # 判断是否输入了反方向
    if changeDirection == 'right' and not direction == 'left':
    direction = changeDirection
    if changeDirection == 'left' and not direction == 'right':
    direction = changeDirection
    if changeDirection == 'up' and not direction == 'down':
    direction = changeDirection
    if changeDirection == 'down' and not direction == 'up':
    direction = changeDirection
    # 根据方向移动蛇头的坐标
    if direction == 'right':
    snakePosition[0] += 20
    if direction == 'left':
    snakePosition[0] -= 20
    if direction == 'up':
    snakePosition[1] -= 20
    if direction == 'down':
    snakePosition[1] += 20
    # 增加蛇的长度
    snakeSegments.insert(0,list(snakePosition))
    # 判断是否吃掉了树莓
    if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:
    raspberrySpawned = 0
    else:
    snakeSegments.pop()
    # 如果吃掉树莓,则重新生成树莓
    if raspberrySpawned == 0:
    x = random.randrange(1,32)
    y = random.randrange(1,24)
    raspberryPosition = [int(x*20),int(y*20)]
    raspberrySpawned = 1
    # 绘制pygame显示层
    playSurface.fill(blackColour)
    for position in snakeSegments:
    pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))
    pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))

    # 刷新pygame显示层
    pygame.display.flip()
    # 判断是否死亡
    if snakePosition[0] > 620 or snakePosition[0] < 0:
    gameOver(playSurface)
    if snakePosition[1] > 460 or snakePosition[1] < 0:
    for snakeBody in snakeSegments[1:]:
    if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
    gameOver(playSurface)
    # 控制游戏速度
    fpsClock.tick(5)

    if __name__ == "__main__":
    main()

    6、Python爬取你想要的信息

    还可以用python爬取电影分析影评,用词云进行展示效果:

    写几行代码浪漫一把也是可以的,你也可以把里面的字符换成爱人的名字,做成浪漫的云图词!

    Python有哪些神一般的蜜汁操作? 《附代码》

    7、Python看看你朋友圈都是什么样的人

    掌握python以后,你玩微信别人也玩微信。

    但是你可以得到不一样的骚操作,几十行代码掌握你朋友圈都是些什么样的人!

    比如?爬取微信好友男女比例并进行可视化

    Python有哪些神一般的蜜汁操作? 《附代码》

     

    再来看看你的好友都来自哪个地方

    Python有哪些神一般的蜜汁操作? 《附代码》

     

    这还不够,来把好友的个性签名也玩出逼格,做个创意的文字图,看看大家都在说什么

    Python有哪些神一般的蜜汁操作? 《附代码》

     

    温馨小提示,如果分析的对象换成你的用户们...是不是业绩能蹭蹭上涨?

    8、Python自己做小动画

    还可以用字符串跳一段MV,成为B站大佬,使用 OpenCV 处理图片视频,将视频转为字符画序列,再在终端中播放字符动画。

    Python有哪些神一般的蜜汁操作? 《附代码》

     

    9、Python鉴黄

    看看Python还能用来干嘛

    《图片就不放了 怕被举报 自行想象》

    哈哈 可以用来emmm 鉴黄!

    使用 Python3 去识别图片是否为色情图片,利用PIL 这个图像处理库,会编写算法来划分图像的皮肤区域。

    其中涉及到Python 3 基础知识,肤色像素检测与皮肤区域划分算法。

    是不是万万没想到?

    10、PythonAI医疗

    还被用进医疗的领域。

    典型如腾讯觅影这样的产品,用于AI医学图像分析,在癌症的早期识别上,人工智能对拍片的识别能力,也已经超过人类医生。

    Python有哪些神一般的蜜汁操作? 《附代码》

     

    Python能做的好玩又实用的事情实在太多啦!欢迎留言一起分享讨论

    不一定要你学的非常专业才可以实现,里面有些也是非程序员Python用户做出来的好玩的东西,期待着你利用Python 去做出更多有趣的事情!

    可以一起交流

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家

    学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以我的Python官方群聊小白到大佬全套学习视频免费领取

    每日分享,喜欢的看标题和多多点赞收藏加关注~~蟹蟹
  • 相关阅读:
    asp.net发送email
    把GridView控件完全放入UpdatePanel中时,实现了点击编辑、更新等按钮时,页面不再刷新,对话框不起作用
    【原】 POJ 2352 Stars 树状数组 解题报告
    【原】 POJ 2739 Sum of Consecutive Prime Numbers 筛素数+积累数组 解题报告
    【原】 POJ 2262 Goldbach's Conjecture 筛素数 解题报告
    【原】 POJ 2593 Max Sequence 动态规划 解题报告
    【原】 POJ 2159 Tree Recovery 解题报告
    【原】 POJ 3067 Japan 2D树状数组+逆序数 解题报告
    【原】 POJ 2299 UltraQuickSort 逆序数 解题报告
    【原】 POJ 2499 Binary Tree 优化经典 解题报告
  • 原文地址:https://www.cnblogs.com/nanhe/p/12784441.html
Copyright © 2011-2022 走看看