由于我今天要练手做一个获取指定两文本之间的内容(取出中间文本),所以用到了index()方法 在使用过程中,碰上几个有趣的问题,我决定记录一下保证以后不会再出现!
我要获取的是全民K歌分享歌曲的真实下载链接,在经过各种网页分析之后(此处忽略一万字网页分析过程,如果你有需要我可以在另开文章写,很简单),我需要取出 “playurl”:” 至 “, 之间的内容,也就是歌曲链接啦。先贴上我刚开始写的代码(其实是网上copy过来再改改的
begin = data.index('"playurl":"') + 1
end = data.index('",', begin)
play_url = data[begin:end]
执行后得到如下结果
playurl”:”http://dl.stream.kg.qq.com/szkge/5f1df0f6432bd9287e866f1142a6f99780d859e0?ftnrkey=7a039fed55b00c20be61cf2da649f4f57a9f9d55129571b7959260f624d28ea217e4370a39ba0e79415a1d832047ed1a3468428a3711c3e321cd2e008d9d3ffc&vkey=87B8FA7323B449912EA32D8D9C5105A32BFBD78D0C5D75F94F41ECC603FE43FB750FD87037555B2E2ED2F07263FF7B41AD1359DC5EF4B74B9A70BEBF5A55490411EAAACD5C675A4C8FF4A0764E2B79D1A14C4EDE61D5B35D&fname=1021_e9638deee080f1bb547e47ef80f987fc618188ad.0.m4a&fromtag=1506&sdtfrom=v1506
而我想要的是从http开始的内容,所以我测试了半天,发现是那个 +1 的问题。 原来,index()获取到索引后,默认是最左边一个字符的索引,也就是上文代码中的 ” 所在的索引,我们+1后,就变成了p所在索引,因此执行后出现第一个引号消失了而从p开始算 明白了原因,就可以解决了。很简单,直接获取+自身长度即可。修改后代码如下
begin = data.index('"playurl":"') + len('"playurl":"')
end = data.index('",', begin)
play_url = data[begin:end]
也就是把+1 改成了 +len(‘”playurl”:”‘) ,这样在执行结果如下
http://dl.stream.kg.qq.com/szkge/5f1df0f6432bd9287e866f1142a6f99780d859e0?ftnrkey=ffa2360d2a287aad928b4cdb7bfd8132b814c4f2d8e919b74f26bd37b0e4470d80469ae091b6fe35ce30d45fffb9a782e777045217f9011dda9b2a2bd42f7a1a&vkey=E698512E5CB7A541942685C77FBF1068235409934EF5E3F13B498DDFCD2965C24E2ACB8C7B2126700222961FB84FD640356A0A2DB38B82D6111AEBDDD7797F9DE1A6B2C69311E2D9A202C1A06DCE2BC821385A70DBF73824&fname=1021_e9638deee080f1bb547e47ef80f987fc618188ad.0.m4a&fromtag=1506&sdtfrom=v1506
Perfect,完美达到预期。
今天就到这吧,明天继续把这个小爬虫写完,不过怎么还是觉得易语言方便些呢。可能习惯了吧!