首页 文章 精选 留言 我的

精选列表

搜索[Web 应用托管],共10000篇文章
优秀的个人博客,低调大师

[python] 1、python鼠标点击、移动事件应用——写一个自动下载百度音乐的程序

1、问题描述: 最近百度总爱做一些破坏用户信任度的事——文库金币变券、网盘限速,吓得我赶紧想办法把存在百度云音乐中的歌曲下载到本地。 http://yinyueyun.baidu.com/ 可问题是云音乐中并没有批量下载,而上面我总共存了700多首音乐! 因此:有必要写一个脚本自动下载这些音乐了!!! 2、解决问题 自动下载歌曲有两种方法: JS法 模拟鼠标点击法 由于考虑到JS法需要分析网页结构、寻找下载链接,工作量有点大,于是选择用模拟鼠标点击法! 在linux上我首先想到用python来做这件事。 用python使用鼠标点击事件比较简单,在github上有人开源了一个PyMouse模块,简单几行代码就能模拟鼠标! https://github.com/pepijndevos/PyMouse/wiki/Documentation 该PyMouse有个简单的DEMO: 1 # import the module 2 from pymouse import PyMouse 3 4 # instantiate an mouse object 5 m = PyMouse() 6 7 # move the mouse to int x and int y (these are absolute positions) 8 m.move(200, 200) 9 10 # click works about the same, except for int button possible values are 1: left, 2: right, 3: middle 11 m.click(500, 300, 1) 12 13 # get the screen size 14 m.screen_size() 15 # (1024, 768) 16 17 # get the mouse position 18 m.position() 19 # (500, 300) 因此,编写一个可以自动下载一页歌曲(20首)的脚本如下: 该代码所做的主要任务是点击下载,然后再点击确定: 注:如果只是两次点击如何解释21、22行代码? 因为点击下载之后,会有个选择下载音质的弹框,音质有高、中、低三种,但是有些歌曲只有一种或两种音质可以选择。这导致弹框的位置有所不同(确定按钮的位置也随之不同),解决此问题一个“笨”方法是将可能区域都点一遍! 1 # import the module 2 from pymouse import PyMouse 3 from time import sleep 4 5 # instantiate an mouse object 6 m = PyMouse() 7 8 pos_x = 1120 9 pos_y = 302 10 pos_y_add = 38 11 one_page_lines = 20 12 13 select_button_x = 984 14 select_button_y = 550 15 16 sleep(2) 17 18 for i in range(0,one_page_lines): 19 m.click(pos_x,pos_y+i*38,1) 20 sleep(2) 21 for j in range(0,30): 22 m.click(select_button_x,select_button_y+j*5,1) 23 sleep(3) 24 print(i) 3、遗留问题 上面脚本能在网速良好情况下将一页的歌曲下载到本地,接下来自然想到的是模拟鼠标拖动(拖动slide bar,切换至下一页20首歌曲)。 于是我尝试写一个模拟鼠标拖动的脚本做个测试: 1 # import the module 2 from pymouse import PyMouse 3 from time import sleep 4 5 # instantiate an mouse object 6 m = PyMouse() 7 8 pos_x = 1120 9 pos_y = 302 10 pos_y_add = 38 11 one_page_lines = 20 12 13 select_button_x = 984 14 select_button_y = 550 15 16 slide_x = 1915 17 slide_y = 312 18 slide_dis = 1 19 20 sleep(5) 21 for page in range(1,40): 22 m.press(slide_x,slide_y) 23 slide_y = slide_y + slide_dis 24 m.move(slide_x,slide_y) 25 m.release(slide_x,slide_y) 26 sleep(10) 27 理论上每次滑动slide bar歌曲list移动的距离是相同的,而实测发现存在没有规律的误差! 由于第二节中下载歌曲的脚本鼠标点击的start位置是固定的,因此一旦不能利用slide bar移动使歌曲列表恰好切到下一页,就会导致下载脚本点击事件点错地方。 后续优化方向可以利用图像识别对slide bar移动进行校准~ 本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/6942729.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

FPGA研究领域奠基者,北京大学高能效计算与应用中心主任丛京生

由中国计算机学会(CCF)主办,福州市人民政府、福州大学承办的2017中国计算机大会(CNCC2017)将于10月26-28日在福州举行。已经注册参会的朋友们可以现场一睹大牛们的精彩报告!10月15日前线上注册缴费截止,但未注册缴费的也不要着急,您可以选择现场注册参会! 延续2016年大会的顶级嘉宾阵容,CNCC 2017 将会迎来更多国内外知名专家学者,大会特邀阵容如下: 菲尔兹奖获得者丘成桐,中国科学院院士梅宏,微软全球执行副总裁沈向洋,美国国家工程院院士丛京生,CCF会士、中科院计算所研究员陈熙霖,斯坦福大学副教授,斯坦福人工智能实验室和视觉实验室主任李飞飞,北卡罗来纳大学教堂山分校教授Dinesh Manocha,腾讯集团高级执行副总裁汤道生,今日头条副总裁、IEEE Fellow马维英,滴滴出行高级副总裁章文嵩,出门问问创始

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册