python 跳一跳_python跳一跳 - CSDN
精华内容
参与话题
  • 使用python跳一跳超详细使用教程

    千次阅读 2018-11-19 10:47:04
    在上一篇文章里介绍了使用Python玩微信跳一跳的详细使用教程,不过依旧还是有很多小伙伴有各种各样的问题。为了让各位小伙伴都能使用黑科技,于是再做一个超详细教程。从Python的安装开始,手把手教你一步一步配置...

    在上一篇文章里介绍了使用Python玩微信跳一跳的详细使用教程,不过依旧还是有很多小伙伴有各种各样的问题。为了让各位小伙伴都能使用黑科技,于是再做一个超详细教程。从Python的安装开始,手把手教你一步一步配置好环境直到成功运行。

    本文首发于http://www.52aite.cn博客,没有知乎,没有微信公众号,只是蹭一波python跳一跳的热度

    python辅助作者github账号为:wangshub。

    作者的知乎专栏为:https://zhuanlan.zhihu.com/p/32452473

    下面进入正文。

    本文适用对象为WIN10系统,安卓用户。目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作。我会把我自己的每一步都写下来。

    准备工具:

    Windows 10; 
    一个安卓真机 
    python 3 
    adb驱动 
    依赖安装包(这个在源码中已经列出,下面会详细说明)

    0x01:Python下载

    进入Python官方网站,将Python下载下来。在官网点击Download,选择Windows,进入下载页面,根据自己的系统下载对应的Python安装程序,32位的下载X86,64位的下载X86-64。如图所示:

    Python的下载与安装

    将Python下载到电脑之后点击安装,在安装的时候有一个步骤非常重要,就是自动配置环境变量,这里一定要勾选上。如图所示:

    Python自动配置环境变量

    这一步勾选上后,就一直点next直到Python完成安装,Python完成安装后打开CMD控制台,输入命令Python,出现如下界面,即为安装成功。如图所示:

    查看Python是否安装成功

    0x02:pip安装

    pip类似CentOS里面的yum,用来安装Python包非常方便,因为运行这个跳一跳辅助将会用到很多的依赖包,这些依赖包将要用到pip下载,所以我们首先把pip装好。

    事实上在新下载的Python中已经有pip功能,这一步好像写得有点多余了,以前记得是要重新下载pip的,既然现在的最新版Python可以直接使用pip功能,我们可以在CMD控制台直接输入pip,看是否有以下界面显示,出现如下界面即可正常使用pip功能。

    使用pip命令

    0x03:adb驱动安装

    adb驱动下载地址:https://adb.clockworkmod.com/

    安装时候选择一个容易记住的路径,这个很重要,因为adb驱动没有自动配置环境变量,所以实验时候将adb安装在一个非常容易记住的路径,这里以E:\adb为例。如图:

    adb驱动安装

    安装完成后我们在CMD控制台输入adb是没有反应的,因为我们还没有配置好adb的环境变量,我们可以右键点击我的电脑,选择属性,点击高级系统设置,在高级中点击环境变量。

    环境变量配置

    进入环境变量配置页面之后,在系统变量中找到Path,点击Path再点击编辑,然后将刚才安装adb的路径复制,这里我们是以E:\adb为例的,所以我们将这个路径加入进环境变量中,点击保存。这时候我们再次打开CMD控制台,输入adb,出现如下界面,即为配置成功。如图:

    adb命令

    0x04:源码拷贝

    到这一步,我们要将源码下载到本地电脑里。

    github地址:https://github.com/wangshub/wechat_jump_game

    进入github后,点击clone or downloads,把源码下载到本地。如图所示:

    github下载项目源码

    0x05:安装依赖安装包

    跳一跳微信辅助的最终运行需要很多的Python模块,作者已经将这些所需要的模块都写在了源码中的requirements.txt中,所以我们执行命令 pip install -r requirements.txt,即可将这些必须的模块下载下来,模块包括有matplotlib,numpy等。

    如图,我们使用CD命令,切换到源码的下载目录,再执行命令pip install -r requirements.txt

    下载相关依赖包

    一定要记得切换目录后再执行命令。

    0x06:手机与电脑连接

    将安卓手机用USB与电脑相连接,在安卓手机上打开开发者模式,并开启USB调试模式,每种安卓手机开启的方法都不一样,这里需要小伙伴自己查询自己型号的手机如何开启开发者模式,以OPPO A57手机为例,在设置中找到手机版本号,连续点击5次即可开启开发者模式。

    如果以上操作没有任何错误,那么在CMD控制台,执行命令 adb devices可显示当前手机连接的端口号。

    0x07:运行跳一跳

    在以上步骤都没有任何错误的情况下,打开微信,开启跳一跳小游戏,进入游戏主页面,然后再打开CMD控制台,使用CD命令切换目录,切换到跳一跳辅助的源码目录下,执行命令wechat_jump_auto.py。

    这时候,你会惊奇的发现,你的手机上那个小人已经开始成功的开始自动跳跃了,不过一开始可能分数不高,这就需要自己耐心的慢慢调节参数了,以上几个步骤都坚持下来的小伙伴们,想必调节参数也是会非常有耐心的。

    参数调节请打开源码目录下的config文件夹,里面有适配各种屏幕和机型的文件夹,根据自己的分辨率或机型,点击进入相应文件夹,打开里面的config.json文件,修改参数即可。建议修改前最好备份一份。

    晒高分,秀战绩。小伙伴们都high起来吧。

    微信跳一跳高分秘籍

     

    如果是网络不好的,建议用国内的源,亲测好使,命令行如下:

    pip install --index https://mirrors.ustc.edu.cn/pypi/web/simple/ -r requirements.txt

     

    展开全文
  • 由于自己会在有空的时候看下Python类的文章,饶有兴趣,无意中看到了用Python来玩跳一跳,特别想亲自试一下。在照着网上的例子试验过程中并非一蹴而就,总会遇到各种问题,最终花了2个多小时才弄好,因此我想记录...

    跳一跳自2017年12月28日推出后,在18年初火了,3个多月过去了,这个游戏已经过了最火的时候。由于自己会在有空的时候看下Python类的文章,饶有兴趣,无意中看到了用Python来玩跳一跳,特别想亲自试一下。在照着网上的例子试验过程中并非一蹴而就,总会遇到各种问题,最终花了2个多小时才弄好,因此我想记录一下我的试验成功的里程。

    1、首先需要安装好Python

    我自己的电脑是win10的系统,Python的版本是3.6.0

    2、adb驱动安装

    adb驱动下载的地址:https://adb.clockworkmod.com/

    下载后安装,记住安装的路径,并把它添加到环境变量的Path中


    这个是我安装的路径,win10下在编辑环境变量的窗口新建,然后将路径粘贴进去,确定即可。

    检验adb是否安装成功:

    打开cmd控制台,输入adb,出现以下界面,即为配置成功。


    3、下载源码

    从GitHub上拉下相应的代码 https://github.com/wangshub/wechat_jump_game


    大牛写的,后面可细细品味。

    4、Python中导入需要用到的模块

    将下载好的zip文件解压到相应的文件夹中。跳一跳需要用到很多Python的模块,需要import很多的包,由于作者已经将所需要的包写在requirements.txt中了,所以我们直接执行命令

    pip install -r ruquirements.txt,即可将程序运行需要的包导入进来,包括matplotlib,numpy,opencv-python,Pillow,tensorflow等等。


    我在搜其他文章的时候,要你导这个模块,导那个模块,而且不同版本的Python需要导入不同版本的包,其实没必要。这里必须要赞一下GitHub的作者,十分有心,他将需要到的包都写在txt文件里,省去了大量时间。

    5、手机连接

    这里就以小米6为例(安卓手机应该都类似的),首先将小米6的开发者模式打开,并开启USB调试模式,此外还需开启USB调试(安全模式)(有的手机可能只需要开启第一个即可),如下:


    以上操作完成后,在cmd控制台执行命令adb devices可显示当前手机链接的端口号,即可显示正常连接。


    说明一下我碰倒的问题,我在配置好后,并运行相应的.py文件,一直报adb未添加到环境变量路径的问题,后来才知道,我的手机未开启开发模式。

    6、运行.py文件

    cmd控制台使用cd命令切换到跳一跳源码目录下,执行命令python wechat_jump_auto.py即可。


    我在开始跳时,第一步都过不了,后来才知道,需要调整相应的参数。

    参数的调整需要进入到源码目录下的config文件夹中


    小米6的分辨率是1920*1080,将里面的文件config.json复制粘贴到根目录下,并修改其中的参数


    我将press_coefficient改为上面这个参数,跳了一下效果蛮理想,不过不同的手机参数不一样,这个可以试出来的。

    由于这款游戏外挂比较多,腾讯出了一系列反制措施,我试着跳了一下,结果就不作为成绩


    这里还需要赞一下作者,在源码中还有ai算法的.py文件,但是参数需要改为press_coefficient = 1.442,cd命令切换到跳一跳源码目录下,执行命令:

    python wechat_jump_auto_ai.py

    这样效果比较好,跳出的成绩也比较理想,但是分数上了650以上,也会出现上面的问题,不过这个分数已经很不错了,我最后跑了658。

    这些东西重在学习和娱乐,以后有时间可以多看下源码,了解大神的逻辑和编程思路,好好学习,经常写代码,这样自己也会越来越牛。

    算法是基于勾股定理,计算出图片上的斜边长。然后根据距离调整相应的按压时间,保证下一跳的准确性。


    7、参考链接

    https://www.cnblogs.com/centos2017/p/8178215.html

    https://github.com/wangshub/wechat_jump_game

    http://blog.csdn.net/ceovip/article/details/78942556

    https://jingyan.baidu.com/article/7f41ecec349c0f593d095c84.html

    http://blog.csdn.net/LittleBeautiful/article/details/78955792


    展开全文
  • 跳一跳,python脚本原理

    千次阅读 2018-04-06 08:03:59
    1.跳一跳执行原理分析核心思路:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,再根据两个点的距离乘以一个时间系数获得长按的时间。识别棋子的位置识别当前位置的坐标的思路:获得下一个位置...

    1.跳一跳执行原理分析

    核心思路:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,再根据两个点的距离乘以一个时间系数获得长按的时间。

    识别棋子的位置

    识别当前位置的坐标的思路:

    获得下一个位置坐标的思路:


    识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条
        直线,就从上往下一行一行遍历,比较颜色(颜色用了一个区间来比较)
        找到最下面的那一行的所有点,然后求个中点,求好之后再让 Y 轴坐标
        减小棋子底盘的一半高度从而得到中心点的坐标
    识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,
        由于圆形的块最顶上是一条线,方形的上面大概是一个点,所以就
        用类似识别棋子的做法多识别了几个点求中点,这时候得到了块中点的 X
        轴坐标,这时候假设现在棋子在当前块的中心,根据一个通过截图获取的
        固定的角度来推出中点的 Y 坐标
    最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)

    2.跳一跳python代码开发

    # -*- coding: utf-8 -*-
    from __future__ import print_function, division
    import os
    import sys
    import time
    import math
    import random
    from PIL import Image
    from six.moves import input
    try:
        from common import debug, config, screenshot
    except Exception as ex:
        print(ex)
        print('请将脚本放在项目根目录中运行')
        print('请检查项目根目录中的 common 文件夹是否存在')
        exit(-1)
    VERSION = "1.1.1"
    
    # DEBUG 开关,需要调试的时候请改为 True,不需要调试的时候为 False
    DEBUG_SWITCH = False
    
    
    # Magic Number,不设置可能无法正常执行,请根据具体截图从上到下按需
    # 设置,设置保存在 config 文件夹中
    config = config.open_accordant_config()
    under_game_score_y = config['under_game_score_y']
    # 长按的时间系数,请自己根据实际情况调节
    press_coefficient = config['press_coefficient']
    # 二分之一的棋子底座高度,可能要调节
    piece_base_height_1_2 = config['piece_base_height_1_2']
    # 棋子的宽度,比截图中量到的稍微大一点比较安全,可能要调节
    piece_body_width = config['piece_body_width']
    
    
    def set_button_position(im):
        """
        将 swipe 设置为 `再来一局` 按钮的位置
        """
        global swipe_x1, swipe_y1, swipe_x2, swipe_y2
        w, h = im.size
        left = int(w / 2)
        top = int(1584 * (h / 1920.0))
        left = int(random.uniform(left-50, left+50))
        top = int(random.uniform(top-10, top+10))    # 随机防 ban
        swipe_x1, swipe_y1, swipe_x2, swipe_y2 = left, top, left, top
    
    def jump(distance):
        """
        跳跃一定的距离
        """
        press_time = distance * press_coefficient
        press_time = max(press_time, 200)   # 设置 200ms 是最小的按压时间
        press_time = int(press_time)
        cmd = 'adb shell input swipe {x1} {y1} {x2} {y2} {duration}'.format(
            x1=swipe_x1,
            y1=swipe_y1,
            x2=swipe_x2,
            y2=swipe_y2,
            duration=press_time
        )
        print(cmd)
        os.system(cmd)
        return press_time
    
    
    def find_piece_and_board(im):
        """
        寻找关键坐标
        """
        w, h = im.size
    
        piece_x_sum = 0
        piece_x_c = 0
        piece_y_max = 0
        board_x = 0
        board_y = 0
        scan_x_border = int(w / 8)  # 扫描棋子时的左右边界
        scan_start_y = 0  # 扫描的起始 y 坐标
        im_pixel = im.load()
        # 以 50px 步长,尝试探测 scan_start_y
        for i in range(int(h / 3), int(h*2 / 3), 50):
            last_pixel = im_pixel[0, i]
            for j in range(1, w):
                pixel = im_pixel[j, i]
                # 不是纯色的线,则记录 scan_start_y 的值,准备跳出循环
                if pixel != last_pixel:
                    scan_start_y = i - 50
                    break
            if scan_start_y:
                break
        print('scan_start_y: {}'.format(scan_start_y))
    
        # 从 scan_start_y 开始往下扫描,棋子应位于屏幕上半部分,这里暂定不超过 2/3
        for i in range(scan_start_y, int(h * 2 / 3)):
            # 横坐标方面也减少了一部分扫描开销
            for j in range(scan_x_border, w - scan_x_border):
                pixel = im_pixel[j, i]
                # 根据棋子的最低行的颜色判断,找最后一行那些点的平均值,这个颜
                # 色这样应该 OK,暂时不提出来
                if (50 < pixel[0] < 60) \
                        and (53 < pixel[1] < 63) \
                        and (95 < pixel[2] < 110):
                    piece_x_sum += j
                    piece_x_c += 1
                    piece_y_max = max(i, piece_y_max)
    
        if not all((piece_x_sum, piece_x_c)):
            return 0, 0, 0, 0
        piece_x = int(piece_x_sum / piece_x_c)
        piece_y = piece_y_max - piece_base_height_1_2  # 上移棋子底盘高度的一半
    
        # 限制棋盘扫描的横坐标,避免音符 bug
        if piece_x < w/2:
            board_x_start = piece_x
            board_x_end = w
        else:
            board_x_start = 0
            board_x_end = piece_x
    
        for i in range(int(h / 3), int(h * 2 / 3)):
            last_pixel = im_pixel[0, i]
            if board_x or board_y:
                break
            board_x_sum = 0
            board_x_c = 0
    
            for j in range(int(board_x_start), int(board_x_end)):
                pixel = im_pixel[j, i]
                # 修掉脑袋比下一个小格子还高的情况的 bug
                if abs(j - piece_x) < piece_body_width:
                    continue
    
                # 修掉圆顶的时候一条线导致的小 bug,这个颜色判断应该 OK,暂时不提出来
                if abs(pixel[0] - last_pixel[0]) \
                        + abs(pixel[1] - last_pixel[1]) \
                        + abs(pixel[2] - last_pixel[2]) > 10:
                    board_x_sum += j
                    board_x_c += 1
            if board_x_sum:
                board_x = board_x_sum / board_x_c
        last_pixel = im_pixel[board_x, i]
    
        # 从上顶点往下 +274 的位置开始向上找颜色与上顶点一样的点,为下顶点
        # 该方法对所有纯色平面和部分非纯色平面有效,对高尔夫草坪面、木纹桌面、
        # 药瓶和非菱形的碟机(好像是)会判断错误
        for k in range(i+274, i, -1):  # 274 取开局时最大的方块的上下顶点距离
            pixel = im_pixel[board_x, k]
            if abs(pixel[0] - last_pixel[0]) \
                    + abs(pixel[1] - last_pixel[1]) \
                    + abs(pixel[2] - last_pixel[2]) < 10:
                break
        board_y = int((i+k) / 2)
    
        # 如果上一跳命中中间,则下个目标中心会出现 r245 g245 b245 的点,利用这个
        # 属性弥补上一段代码可能存在的判断错误
        # 若上一跳由于某种原因没有跳到正中间,而下一跳恰好有无法正确识别花纹,则有
        # 可能游戏失败,由于花纹面积通常比较大,失败概率较低
        for j in range(i, i+200):
            pixel = im_pixel[board_x, j]
            if abs(pixel[0] - 245) + abs(pixel[1] - 245) + abs(pixel[2] - 245) == 0:
                board_y = j + 10
                break
    
        if not all((board_x, board_y)):
            return 0, 0, 0, 0
        return piece_x, piece_y, board_x, board_y
    
    
    def yes_or_no(prompt, true_value='y', false_value='n', default=True):
        """
        检查是否已经为启动程序做好了准备
        """
        default_value = true_value if default else false_value
        prompt = '{} {}/{} [{}]: '.format(prompt, true_value,
            false_value, default_value)
        i = input(prompt)
        if not i:
            return default
        while True:
            if i == true_value:
                return True
            elif i == false_value:
                return False
            prompt = 'Please input {} or {}: '.format(true_value, false_value)
            i = input(prompt)
    
    
    def main():
        """
        主函数
        """
        op = yes_or_no('请确保手机打开了 ADB 并连接了电脑,'
                       '然后打开跳一跳并【开始游戏】后再用本程序,确定开始?')
        if not op:
            print('bye')
            return
        print('程序版本号:{}'.format(VERSION))
        debug.dump_device_info()
        screenshot.check_screenshot()
    
        i, next_rest, next_rest_time = (0, random.randrange(3, 10),
                                        random.randrange(5, 10))
        while True:
            screenshot.pull_screenshot()
            im = Image.open('./autojump.png')
            # 获取棋子和 board 的位置
            piece_x, piece_y, board_x, board_y = find_piece_and_board(im)
            ts = int(time.time())
            print(ts, piece_x, piece_y, board_x, board_y)
            set_button_position(im)
            jump(math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2))
            if DEBUG_SWITCH:
                debug.save_debug_screenshot(ts, im, piece_x,
                                            piece_y, board_x, board_y)
                debug.backup_screenshot(ts)
            im.close()
            i += 1
            if i == next_rest:
                print('已经连续打了 {} 下,休息 {}s'.format(i, next_rest_time))
                for j in range(next_rest_time):
                    sys.stdout.write('\r程序将在 {}s 后继续'.format(next_rest_time - j))
                    sys.stdout.flush()
                    time.sleep(1)
                print('\n继续')
                i, next_rest, next_rest_time = (0, random.randrange(30, 100),
                                                random.randrange(10, 60))
            # 为了保证截图的时候应落稳了,多延迟一会儿,随机值防 ban
            time.sleep(random.uniform(0.9, 1.2))
    if __name__ == '__main__':
        main()
    

    3.跳一跳操作流程

    (1)准备工具

    Windows系统
    安卓模拟器
    python3安装包
    adb驱动 
    依赖安装包(这个在源码中已经列出,下面会详细说明)

    (2)Python运行环境安装

    进入Python官方网站,将Python下载下来。在官网点击Download,选择Windows,进入下载页面,根据自己的系统下载对应的Python安装程序,32位的下载X86,64位的下载X86-64。


    将Python下载到电脑之后点击安装,在安装的时候有一个步骤非常重要,就是自动配置环境变量,这里一定要勾选上。如图所示:

    Python自动配置环境变量

    这一步勾选上后,就一直点next直到Python完成安装,Python完成安装后打开CMD控制台,输入命令Python,出现如下界面,即为安装成功。

    (3)pip安装

    pip类似CentOS里面的yum,用来安装Python包非常方便,因为运行这个跳一跳辅助将会用到很多的依赖包,这些依赖包将要用到pip下载,所以我们首先把pip装好。

    事实上在新下载的Python中已经有pip功能,这一步好像写得有点多余了,以前记得是要重新下载pip的,既然现在的最新版Python可以直接使用pip功能,我们可以在CMD控制台直接输入pip,看是否有以下界面显示,出现如下界面即可正常使用pip功能。

    使用pip命令


    adb驱动安装

    adb驱动下载地址:https://adb.clockworkmod.com/

    安装时候选择一个容易记住的路径,这个很重要,因为adb驱动没有自动配置环境变量,所以实验时候将adb安装在一个非常容易记住的路径,这里以E:\adb为例。如图:

    adb驱动安装

    安装完成后我们在CMD控制台输入adb是没有反应的,因为我们还没有配置好adb的环境变量,我们可以右键点击我的电脑,选择属性,点击高级系统设置,在高级中点击环境变量。

    环境变量配置

    进入环境变量配置页面之后,在系统变量中找到Path,点击Path再点击编辑,然后将刚才安装adb的路径复制,这里我们是以E:\adb为例的,所以我们将这个路径加入进环境变量中,点击保存。这时候我们再次打开CMD控制台,输入adb,出现如下界面,即为配置成功。如图:

    adb命令

    源码拷贝

    到这一步,我们要将源码下载到本地电脑里。

    github地址:https://github.com/wangshub/wechat_jump_game

    进入github后,点击clone or downloads,把源码下载到本地,并将下载之后的源码包解压缩。如图所示:

    github下载项目源码

    0x05:安装依赖安装包

    跳一跳微信辅助的最终运行需要很多的Python模块,作者已经将这些所需要的模块都写在了源码中的requirements.txt中,所以我们执行命令 pip install -r requirements.txt,即可将这些必须的模块下载下来,模块包括有matplotlib,numpy等。

    如图,我们使用CD命令,切换到源码解压缩后的目录路径,再执行命令pip install -r requirements.txt

    下载相关依赖包

    一定要记得切换目录后再执行命令。

    手机与电脑连接

    将安卓手机用USB与电脑相连接,在安卓手机上打开开发者模式,并开启USB调试模式,每种安卓手机开启的方法都不一样,这里需要小伙伴自己查询自己型号的手机如何开启开发者模式,以OPPO A57手机为例,在设置中找到手机版本号,连续点击5次即可开启开发者模式。

    如果以上操作没有任何错误,那么在CMD控制台,执行命令 adb devices可显示当前手机连接的端口号。

    运行跳一跳

    在以上步骤都没有任何错误的情况下,打开微信,开启跳一跳小游戏,进入游戏主页面,然后再打开CMD控制台,使用CD命令切换目录,切换到跳一跳辅助的源码目录下,执行命令wechat_jump_auto.py。

    这时候,你会惊奇的发现,你的手机上那个小人已经开始成功的开始自动跳跃了,不过一开始可能分数不高,这就需要自己耐心的慢慢调节参数了,以上几个步骤都坚持下来的小伙伴们,想必调节参数也是会非常有耐心的。

    参数调节请打开源码目录下的config文件夹,里面有适配各种屏幕和机型的文件夹,根据自己的分辨率或机型,点击进入相应文件夹,打开里面的config.json文件,修改参数即可。建议修改前最好备份一份。

    晒高分,秀战绩。小伙伴们都high起来吧。

    微信跳一跳高分秘籍


    4.总结

    展开全文
  • 小编现在每天思考最多的问题就是到底什么时候能发财啊!!!再看看每个月工资卡里的钱真的是...我想到了Python爬虫,如果能把信息都下载下来,可以随时随地的分析,这样一定可以找到称心如意的工作、准备工作 语言:
        

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    小编现在每天思考最多的问题就是

    到底什么时候能发财啊!!!

    再看看每个月工资卡里的钱

    真的是只能以45度角仰望天空

    640?wx_fmt=png&wxfrom=5&wx_lazy=1


    一直以来,年底都是离职的高峰期

    嗑着瓜子,刷着51job

     

    学习Python也有几个月了,

    该考虑换工作啦,

    看了眼招聘网站,就像这样~

    640?wx_fmt=png



    信息玲琅满目不知该怎么办了,这时候,我想到了Python爬虫,如果能把信息都下载下来,可以随时随地的分析,这样一定可以找到称心如意的工作


    一、准备工作     

    语言:Python3

    工具:Pycharm,firefox

    技术:requests,BeautifulSoup,re,csv


    二、流程概述

    爬取51JOB相关工作第一页,获得页数

    然后开始爬虫

    获得每一页详细信息链接

    通过链接获取详细信息

    存入CSV文件


    三、具体实现

    a)使用浏览器前往51JOB打开开发者工具,进行搜索,我们选择http://m.51job.com/,一般来说大型网站的PC端会有反爬虫措施,相对起来移动端会容易点,不过51的PC端也很容易爬,只是不喜欢那个页面风格而已。

    640?wx_fmt=png


    640?wx_fmt=png



    这样信息就一览无遗了,从右边的窗口我们能看到url,参数,以及响应页面


    640?wx_fmt=png

    640?wx_fmt=png


    所以我们只要填写参数所有的数据要求,我们便能等到一串HTML代码,这就是我们要爬取的内容了。


    b)我们需要先直接请求第一页,获取总数,使用requests获取数据,然后使用bs解析,这两个python库,API都很简单并且都比较轻量,很适合初学者学习使用,利用正则表达式获取总工作数量


    数了下大约一页可以显示30条记录,那我们就能得出需要爬的页数

    640?wx_fmt=png


    0?


    c)从密密麻麻的HTML中我们点开形如“http://m.51job.com/search”这样的链接,工作的详细信息映入我们眼帘,这就是我们数据的来源,我们把获得的链接存入一个列表中,便于我们接下来的调用。HTML我们使用BS4解析,BS4有四种解析器,lxml是需要安装C语言库的,我们可以使用html.parser库,lxml速度快但是在这个项目里并没有多明显。

    640?wx_fmt=png

    640?wx_fmt=png

    d)点开链接,我们需要的信息一目了然,从中我们选取我们需要的信息,可以直接使用bs的方法获取,也可以使用正则表达式提取相关段落。特别注意的是有些字段在某些页面是不存在的,比如工作经验,需要判断。


    640?wx_fmt=png


    640?wx_fmt=png

    e)最后便是把信息插入到csv文件中,大家也可以使用mysql,mongoDB等工具存放数据。


    这里特别注意的是,使用”w”模式写,会有空行,但是使用二进制”wb”模式会报二进制与字符串不匹配,所以在打开时候加入参数newline=’’,会避免空行。

    640?wx_fmt=png

    640?wx_fmt=png


    最后完成如上图,可以使用熟悉的Excel软件进行排序操作,随时随地可以查看了。

    Python作为现在最流行的一种语言之一,以其编写简单不罗嗦,类库数量庞大而著称。自从学习了python,厚重的JAVA早被我抛到九霄云外了,日常编写点应用类工具什么的真的特别方便。


    编写应用并不困难,只要思路理清了,对流程进行分解,按块来编程,最后组装起来,如果错了,直接修改出错的块,并不需要动整个代码。

    分享朋友圈 也是另一种赞赏

    The more we share, The more we have

     

    欢迎加入数据君高效数据分析社区


    加我私人微信进入大数据干货群:tongyuannow 




    640?wx_fmt=jpeg





    目前100000+人已关注加入我们

    640.jpeg? 640? 640? 640? 640? 640? 640? 640?

    640? 640? 640? 640? 640? 640? 640? 640?



    640?wx_fmt=jpeg



    展开全文
  • 经由前两期的介绍,对于「跳一跳」自动化的实现,基本差不多了。本期就来完整的跑一遍,快乐学习。1. 获得小跳棋中心位置2. 获得下一方块中心位置Python...
  • Python实现跳一跳自动跳跃

    千次阅读 2019-06-25 21:13:00
    经由前两期的介绍,对于「跳一跳」自动化的实现,基本差不多了。 本期就来完整的跑一遍,快乐学习。...Python+ADB+OpenCv,实现「跳一跳」自动化。 / 01 / ADB ADB工具即Android Debug Bri...
  • Python实现跳一跳自动跳跃!

    千次阅读 2019-07-10 15:15:40
    经由前两期的介绍,对于「 跳一跳 」自动化的实现,基本差不多了。 本期就来完整的跑一遍,快乐学习。 1. OpenCV:模板匹配。 获得小跳棋中心位置 2. OpenCV:边缘检测。 获得下一方块中心位置 Python学习交流群...
  • 本文首发于http://www.52aite.cn博客,没有知乎,没有微信公众号,只是蹭一波python跳一跳的热度 python辅助作者github账号为:wangshub。 作者的知乎专栏为:https://zhuanlan.zhihu.com/p/3
  • python微信跳一

    千次阅读 2019-11-25 10:16:48
    作为一个工科生,体验的不是称霸朋友圈的乐趣,而是体验开发和调试的快感(适当的称霸一下朋友圈就可以了,不要刷得太高哦),下面开始重头戏,用python玩微信小程序跳一跳,称霸您的朋友圈,相信工科生的您,根据...
  • 本脚本使用python+adb 第一步:先装一个python环境,python2.7 没有装过的同学,请访问此链接:如何装python并配置环境 第二步:访问此链接作弊脚本下载程序 ...引用:教你用 Python 来玩微信跳一
  • 本文首发于http://www.52aite.cn博客,没有知乎,没有微信公众号,只是蹭一波python跳一跳的热度。 python辅助作者github账号为:wangshub。 作者的知乎专栏为:https://zhuanlan.zhihu.com/p/32452473 下面进入...
  • 微信跳一python自动代码解读1.0

    千次阅读 2018-01-04 22:41:14
    那个跳一python“外挂”,有几个python文件,其中有一个是得到截图,然后鼠标在图片上点击两次,python窗口上会打印两次鼠标的位置,并且会跟上一行这两个点之间的距离。 这个功能我先给除去获取截屏,就说怎么在...
  • 对很多人来说,可能是已经过时的游戏,对于...Python跳一跳小游戏,这是一款插画风格的小游戏,非常益智。跟前年的跳一跳小游戏一样,也是通过按压屏幕的时间长短,从而控制这个小角色的跳跃距离。 在刚刚开始玩..
  • python+opencv 实现 微信跳一跳外挂

    万次阅读 2019-01-11 20:17:37
    通过无线网络连接(我采用手机开热点,电脑adb连接)这种方式比较复杂,手机要下载个超级终端,在终端中开启adbd服务 (2).使用adb对手机截屏并保存到本地 (3).使用python-opencv对图像进行处理求出要跳跃的距离 (4...
  • python30行代码实现跳一跳辅助

    千次阅读 2018-01-08 12:46:28
    跳一跳是一个最近出的一个比较热然后估计马上就要凉了的微信小游戏,一出来就有各路大神直接实现了各种挂。今天逛了逛b站,没想到发现了一个超简单的版本,虽然还是要手动操作,但胜在代码简单,菜鸡花上10多分钟也...
  • 最近网上比较火的微信“跳一跳”小程序,刷爆了朋友圈,之后怀着好奇心在网上看到有大神自己写了一个python脚本,于是打算借来玩一下,倒腾了半天,各种配置,下面记录一下出现的问题:  这里先贴一下源码:致敬...
  • CCF — 跳一跳(Python实现:100分)

    千次阅读 2018-10-21 11:19:18
    2018.03.1 跳一跳 目录 前言 一、问题描述 二、问题分析 三、程序说明 前言 最近我在做CCF的题目,也打算把每道题的解题思路都写到博客上来,希望能帮助到也在做CCF题目的读者们,希望你们通过本文能有所提示...
  • 使用python进行微信跳一

    千次阅读 2018-01-03 09:18:11
    1、Python2.79 2、安装pip 3、大家下载的时候把github上面的master zip全部下载下来。 4、下载adb,并添加到系统变量path里面 5、手机连接电脑,打开usb调试 6、打开cmd 运行auto.py
  • 微信跳一跳出物理外挂了,教你用Python来玩微信跳一跳,最高可跳4000分。这里为大家整理了一份完整的使用教程,让你轻轻松松那高分!1、下载程序:打开下面的链接,点右侧 clone or download,再点 download zip;...
  • https://github.com/wangshub/wechat_jump_game 仅供娱乐,切勿破坏游戏的公平
1 2 3 4 5 ... 20
收藏数 123,630
精华内容 49,452
关键字:

python 跳一跳