tracks相关知识
-
Python 爬取喜马拉雅音频一、分析音频下载相关链接地址1. 分析专辑音频列表页面 在 PC端用 Chrome 浏览器中打开 喜马拉雅 网站,打开 Chrome开发者工具,随意打开一个音频专辑页面,Chrome开发者工具中返回如下图结果: 经过分析专辑音频列表地址为https://www.ximalaya.com/revision/album/getTracksList?albumId=12378382&pageNum=1 其中:albumId 专辑IDpageNum 页号 返回的页面内容是 json 格式,相比于 html 源码,json 还是很容易处理的,下载音频只需要用到如下参数:tracks 音频信息列表tracks -> title 音频标题tracks -> trackId 音频ID2. 分析音频下载链接地址 随意播放一个音频,在Chrome开发者工具中返回如下图结果: 经过分析专辑音频下载链接为https://www.ximalaya.com/revision/play/tracks?tr
-
【Go语言探险】线上奇怪日志问题的排查最近在日志中发现一些奇怪的日志,大致长这样: Error 2020-08-28 06:59:38.813+00:00 ... _msg=get immersion context, fetch tracks failed, error: <nil> 打印了 Error 日志,error 打印出来却是 <nil>,乍眼一看,以为又遇到了 Go 里面 nil != nil 的问题,但找到对应的那行代码是这样的: tracks, errResult = TrackService.GetRpcTracks(httpCtx, trackIds) if errResult != nil { logs.CtxError(httpCtx.RpcContext(), "get immersion context, fe
-
JS + shell 批量下载 喜马拉雅FM 的音频一直在线收听喜马拉雅的音频节目, 收听广播节目节约了大量时间,不管是地铁上还是走路都可以收听,不用低头看书,也脱离了颈椎病的苦恼。 过年回家我想在车上收听,发现只能通过手机播放,效果不好,我就在网上找下载的方法,网上也有小软件可以下载, 但是没有成功,本着自己动手丰衣足食的原则, 自己来一发吧。 本着简单原则,没有动用高级的编辑语言, 直接浏览器操作,上代码:$(".album_soundlist ul li").each(function(i){ var sound_id = $(this).attr("sound_id"); var json_url = "http://www.ximalaya.com/tracks/" + sound_id +
-
MySql状态查看方法 MySql如何查看连接数和状态?怎么进入mysql命令行呢? mysql的安装目录下面有个bin目录,先用命令行进入该目录,然后用 mysql -uroot -p123456 来登录(注意:用户名和密码不用包含“”) 命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status; 命令:show status like '%下面变量%'; Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。 Connections 试图连接MySQL服务器的次数。 Cre
tracks相关课程
tracks相关教程
- 2. 基于 Selenium 完成发票认证 接下来,我们基于 Scrapy 和 Selenium 来完成笔者工作中的一个需求。我们每个月有一笔通信发票的报销,需要使用对自己在营业厅中买的发票进行校验,然后要截图留存。报销的时间有时候是3个月一次,有时候是半年,所以累积下来有不少发票,这些发票都需要校验和截图才能报销。我们应届生刚工作的时候,我们大部分新员工都是手工截图,非常笨拙,且耗时。由于是搞技术的公司,于是有前端人员写了相关的前端插件来自动化截图和生成发票校验文档,然后在公司内广泛应用。我也写了这样一段基于 Selenium 的自动化截图代码,不过代码依赖 chrome 和 webdriver,所以组内的部分人会把发票的起始编号和张数发给我,我运行程序截好图后将图片打包发给他们自己放到 word 文档中去。来看看发票校验的网站的截图如下:广东通信发票校验网站验证的方式非常机械,正是因为机械操作,才给了我们自动化的可能、看上图中的四个输入框,表示的含义分别为:发票代码:固定值;发票号码:通常而言,从移动营业厅拿的通信发票是连续的,这样就可以用 for 循环实现;纳税人识别号:这个是个固定值;发票面额:固定50元。假设我买300元的卡,就会对应6张发票;我们填好每张发票的相应信息,只有一个变量。在查询之前,需要先拖动滑块进行验证,验证通过,再点击查询就可以进行认证。得到了认证结果后,截张图,如此进行下去,直到所有的发票都校验截图完毕。令人欣慰的是这里的滑块验证只需要做一次,得到了相应的认证截图后,每次调整下一张发票的发票号码,在截一张图即可。看下面的做法:104因此,我们得到了这样的机械化动作:打开发票校验页面;输入第一张发票的四个参数,然后拖动滑块到最右端完成校验;截图留存;改动第二个输入框的发票号码,为下一个发票编号,然后直接截图;重复,直到最后一张发票截图成功;对应这样的动作我们翻译成相应的 Selenium 自动化代码如下:"""测试 selenium 工具"""import timeimport randomfrom selenium import webdriverfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver import ActionChains# 固定值ticket_code = "144011690802"identification_number = "91440101618652334F"face_value = 50# 起始编号ticket_start_num = 15415104# 发票总数total_count = 10def click_space(driver): """ 点击下空白处,使得输入框失去焦点 """ driver.find_elements_by_xpath('//div[@class="check-main"]/table/tbody/tr[1]/td[1]')[0].click()def fill_input(driver, idx): """ 填充输入框 """ input_value = [ticket_code, idx, identification_number, face_value] table = driver.find_elements_by_xpath('//div[@class="check-main"]/table/tbody')[0] for i in range(1, len(input_value) + 1): input = table.find_elements_by_xpath(f'./tr[{i}]/td[2]/input')[0] input.clear() input.send_keys(input_value[i - 1]) click_space(driver)def get_track(distance): """ 参考文献2代码,模拟人移动鼠标 :distance为传入的总距离 """ # 移动轨迹 track = [] # 当前位移 current = 0 # 减速阈值 mid = distance * 3 / 5 # 计算间隔 t = 0.4 # 初速度 v = 1 while current < distance: if current < mid: # 加速度为一个随机值 a = random.randint(2, 6) else: # 加速度为一个随机负值 a = -1 * random.randint(1, 2) v0 = v # 当前速度 v = v0 + a * t # 移动距离 move = v0 * t + 0.5 * a * t * t # 当前位移 current += move # 加入轨迹 track.append(round(move)) return trackdef move_to_gap(slider, tracks): """ 参考文献2代码 :slider是要移动的滑块,tracks是要传入的移动轨迹 """ action = ActionChains(driver) action.click_and_hold(slider).perform() for x in tracks: ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform() time.sleep(0.1) ActionChains(driver).release().perform()# 发票校验地址verify_address = "https://gs.etax-gd.gov.cn/gsyw/service/fpyw/fpcy/index"# 想屏蔽selenium标识,避免被服务端检测到,似乎没起作用options = webdriver.ChromeOptions()options.add_experimental_option("excludeSwitches", ['enable-automation'])driver = webdriver.Chrome(options=options, executable_path="C:/Users/spyinx/AppData/Local/Google/Chrome/Application/chromedriver.exe")driver.maximize_window()# 第一步先去发票查询页面driver.get(verify_address)# 等待滑块出现WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, 'nc_1_n1z')))# 填充输入框fill_input(driver, ticket_start_num)# 等待几秒后driver.implicitly_wait(5)# 找到滑动按钮,模拟鼠标按下不松开slider = driver.find_element_by_id('nc_1_n1z')move_to_gap(slider, get_track(300))driver.implicitly_wait(2)driver.find_element_by_id("CxBtn").click()# 查询第一个需要滑动滑块driver.get_screenshot_as_file(f"{ticket_start_num}.png")for i in range(1, total_count): ticket_num = ticket_start_num + i fill_input(driver, ticket_num) driver.get_screenshot_as_file(f"{ticket_num}.png") driver.implicitly_wait(1)上面的代码已经做好了详细的注释,请查找相关资料了解 Selenium 提供的相关方法,比如定位页面元素的方法、对页面元素点击(click)、输入框情况 (clear) 以及输入元素(send_keys) 以及鼠标的相关操作方法。下面我们直接来看代码的演示效果,最后的截图也全部得到。105注意:由于这个滑动验证码是接入的阿里滑动验证码插件,具备超强的反爬虫能力,能识别出是浏览器否被 selenium 控制。本次测试重复了无数次,才终于有一次没有出现滑块校验错误,才成功录下此视频。具体的可以搜索大神如何破解阿里的滑动验证码,不过大部分代码已经过时,无法突破验证。总而言之,上面的操作是不是一定程度上能帮助我们减少手工操作,节约了时间成本?如果大家感兴趣的话,可以尝试使用 Selenium 完成京东商城的自动登录操作,这里会有滑动图片缺口补全的校验,会稍微有点复杂,对你们来说也是一个不错的挑战。
- 图层设置需求分析 一句话介绍
- 萌新必看,小白购课指南 618购课攻略
- 4-7 修改角色信息(前端) 企业级在线办公系统
- 10 C 语言中的 printf() 格式输出 你的第一门编程语言应该是 C 语言
- 15.2【应用】数据排序入门 .Net Core 开发电商后端API
tracks相关搜索
-
tab
table
tableau
tablelayout
table样式
taif
tail
talk
tamcat
tan
target属性
task
tbody
tcl tk
TCP IP
tcp ip协议
tcpdump
tcpip
tcpip协议
tcp连接