【爬虫实战】——利用bs4和正则表达式,简单实现爬取数据

前言

好久没有写博客了,由于一直比较忙,感觉快荒废了学习的步伐,最近由于需要利用爬虫爬取数据,总结一下,以便以后查阅。

目录

  • 一、bs4的安装
  • 二、bs4解析器
  • 三、定位查找标签
  • 四、转换格式
  • 五、提取数据并json输出结果
  • 六、附录

一、bs4的安装

pip install beautifulsoup4

阿里国内源安装:

pip install beautifulsoup4 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

二、bs4解析器

import re
import requests
import json
from bs4 import BeautifulSoup as bs
from ast import literal_eval


class BS:
    def __init__(self):
        # 爬取的地址
        self.url = "https://www.XXX.html"

    def soup(self):

        res = requests.get(self.url)           # 请求页面信息
        soup = bs(res.text, 'html.parser')     # 使用BeautifulSoup解析网页内容
        return soup

其中resp.text是得到的html文件,html.parser是python内置的html解析器,如果没有填写这个参数,会默认这个解析器。

【点击查看要爬取数据的html代码,我要爬取的music的数据】
<script type="text/javascript">
var ap = new APlayer({
    element: document.getElementById('player'),
    narrow: false,
    loop: 'all',<!-- 全部循环 -->
    order: 'random',<!-- 随机循环 -->
    volume: 0.2,<!-- 播放音量 -->
    autoplay: true,          <!-- 是否自动播放 -->
    showlrc: true, <!--是否开启歌词功能 ,默认false(为true时musics集合中需要传入lrc字段。)-->
    fixed:1,<!-- 是否固定在左下角不动, 1即为true -->
    theme: '#F5F5F5',      <!-- 插件背景颜色,建议和你的公告栏背景色一样,这样融为一体的感觉 -->
    music: [
        {
            title: 'イエスタデイ(翻自 Official髭男dism)',
            author: '茶泡饭,春茶,kobasolo',
            url: 'http://music.163.com/song/media/outer/url?id=1397542479.mp3',
            pic: 'http://p1.music.126.net/gEarimK0TLuMp7NTimU8bA==/109951164432885419.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 藤原聡[00:01.000] 作曲 : 藤原聡[00:17.108]何度失ったって[00:20.572]取り返して見せるよ[00:23.773]雨上がり 虹がかかった空みたいな[00:29.471]君の笑みを[00:31.638]例えばその代償に[00:34.698]誰かの表情を[00:37.534]曇らせてしまったっていい[00:41.121]悪者は僕だけでいい[00:45.278]本当はいつでも[00:47.769]誰もと思いやりあっていたい[00:52.417]でもそんな悠長な理想論は[00:55.074]ここで捨てなくちゃな[01:01.100][01:01.779]遥か先で 君へ 狙いを定めた恐怖を[01:09.969]どれだけ僕は[01:11.834]はらい切れるんだろう?[01:15.715][01:16.510]半信半疑で 世間体[01:21.059]気にしてばっかのイエスタデイ[01:24.779]ポケットの中で怯えたこの手は[01:30.103]まだ忘れられないまま[01:35.030][01:36.431]「何度傷ついたって[01:39.935]仕方ないよ」と言って[01:43.214]うつむいて君が溢した[01:47.695]儚くなまぬるい涙[01:51.198]ただの一粒だって[01:54.118]僕を不甲斐なさで 溺れさせて[01:58.814]理性を奪うには十分過ぎた[02:04.244][02:04.484]街のクラクションもサイレンも[02:08.657]届きやしないほど[02:11.520][02:11.777]遥か先へ進め 身勝手すぎる恋だと[02:20.073]世界が後ろから指差しても[02:25.621][02:26.677]振り向かず進め必死で[02:31.165]君の元へ急ぐよ[02:34.959]道の途中で聞こえたSOS さえ[02:41.381]気づかないふりで[02:46.677][03:13.081]バイバイイエスタデイ ごめんね[03:17.362]名残惜しいけど行くよ[03:21.061]いつかの憧れと違う僕でも[03:27.419]ただ1人だけ 君だけ[03:32.113]守るための強さを[03:35.764]何よりも望んでいた この手に今[03:43.287][03:44.207]遥か先へ進め[03:48.734]幼すぎる恋だと[03:52.454]世界が後ろから指差しても[03:58.806]迷わずに進め 進め[04:03.462]2人だけの宇宙へと[04:07.114]ポケットの中で震えたこの手で今[04:13.610]君を連れ出して[04:15.400]未来の僕は知らない[04:19.003]だから視線は止まらない[04:22.603]謎めいた表現技法[04:25.339]意味深な君の気性[04:28.496][04:29.762]アイラブユーさえ[04:31.314]風に 飛ばされそうな時でも[04:36.740]不器用ながら繋いだ この手はもう[04:43.260]決して離さずに[04:46.837]虹の先へ'
        },
        {
            title: '模様 (TV size ver.)',
            author: 'Ivy to Fraudulent Game',
            url: 'http://music.163.com/song/media/outer/url?id=1379857331.mp3',
            pic: 'http://p2.music.126.net/2xfr0JtK2fuYzdZbFgbWaw==/109951167351098841.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 寺口 宣明\n[00:00.150] 作曲 : 寺口 宣明\n[00:00.300]流れに逆らって \n[00:03.725]何かにぶつかって \n[00:06.788]色は変わっているけど\n[00:11.101]鳞の傷は \n[00:14.098]光を受けて \n[00:16.849]模様みたいに綺麗だった\n[00:25.223]言葉を持ってしまった \n[00:28.233]僕らの体は \n[00:31.276]鮮やかじゃないけど\n[00:35.559]重ねた傷も \n[00:38.521]あの痛みさえも \n[00:41.194]僕にとっての模様だった\n[01:05.999]最近ではこの街も少し分かってきた\n[01:18.335]カバンだとか優しさまでもが邪魔になるよ\n[01:30.519]もう少し早く歩くために捨てたのに\n[01:42.767]忘れ物したような顔して立ち止まるのはなぜ\n[01:53.855]流れに飲まれて \n[01:56.925]たどり着く先で \n[01:59.966]何が見えるのだろう\n[02:04.184]届かぬ光と \n[02:07.225]もがきもせずに \n[02:09.897]身を委ねて \n[02:14.821]沈んでゆく\n[02:18.247]言葉を持ってしまった \n[02:21.391]僕らの心は \n[02:24.470]雑草にまみれて\n[02:28.580]でもその中でやっと見つけた \n[02:34.367]夜更けに咲く小さい花\n[02:43.919]いつも角を曲がるたびに \n[02:48.167]後ろ振り向くたびに\n[02:52.991]見えなくなるもの \n[02:56.007]会えなくなる人\n[02:59.094]それでも選んだ場所へと \n[03:05.247]痛みの中で歩いてきた\n[03:40.897]流れに逆らって \n[03:43.918]何かにぶつかって \n[03:46.975]色は変わっているけど\n[03:51.165]鳞の傷は \n[03:54.241]光を受けて \n[03:56.870]模様みたいに綺麗だった\n[04:05.347]言葉を持ってしまった \n[04:08.338]僕らの体は \n[04:11.377]鮮やかじゃないけど\n[04:15.712]重ねた傷も \n[04:18.666]あの痛みさえも \n[04:21.361]僕にとっての模様になる\n[04:34.746]一つだけの模様になる\n'
        },
        {
            title: '桜',
            author: '河口恭吾',
            url: 'http://music.163.com/song/media/outer/url?id=26082994.mp3',
            pic: 'http://p1.music.126.net/-WCvjo0FPtBHCCy7--GIgw==/2485995790424396.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 河口京吾\n[00:01.000] 作曲 : 河口京吾\n[00:49.119]僕が そばにいるよ\n[00:56.069]君を 笑わせるから\n[01:02.969]桜舞う季節かぞえ\n[01:10.069]君と 歩いていこう\n[01:15.120]\n[01:17.320]僕が そばにいるよ\n[01:24.128]君を 笑わせるから\n[01:31.228]桜舞う季節かぞえ\n[01:38.429]君と 歩いていこう\n[01:43.529]\n[01:50.540]まぶしい朝は 何故か切なくて\n[02:04.691]理由をさがすように 君を見つめていた\n[02:18.894]涙の夜は 月の光に 震えていたよ\n[02:37.236]二人で\n[02:41.986]\n[02:48.737]僕が そばにいるよ\n[02:56.087]君を 笑わせるから\n[03:02.988]空のない街抜け出し\n[03:09.989]虹を 探しに行こう\n[03:15.189]\n[03:17.089]いつも そばにいるよ\n[03:24.290]君を 笑わせるから\n[03:31.140]やわらかな風に吹かれ\n[03:38.192]君と 歩いていこう\n[03:45.244]君と 歩いていこう\n[03:50.396]\n[04:01.718]君がいる\n[04:08.718]君がいる\n[04:13.817]いつも そばにいるよ\n[04:34.703]\n'
        },
        {
            title: '愛してる',
            author: '高鈴',
            url: 'http://music.163.com/song/media/outer/url?id=756701.mp3',
            pic: 'http://p2.music.126.net/MqglIg8tvEH2-l71z5OIcg==/109951166200431065.jpg?param=300x300',
            lrc: "[00:00.000] 作词 : Takane Yamamoto\n[00:01.000] 作曲 : Callin'\n[00:14.80]\n[00:14.85]ねぇ もう少しだけ\n[00:19.25]もう少しだけ 聞いていてほしい\n[00:27.31]\n[00:27.41]ねぇ もう少しだけ\n[00:32.02]もう少しだけ わがままいいですか?\n[00:39.70]\n[00:39.72]手にいれた途端に 消えてしまいそう\n[00:46.55]言葉を くれませんか?\n[00:51.10]\n[00:51.16]『愛している 愛している\n[00:57.70]世界が終わるまで』\n[01:05.51]\n[01:05.61]馬鹿げてると 笑いながら\n[01:12.14]口に出してみて\n[01:16.80]\n[01:16.89]愛している そんなことが\n[01:23.32]簡単には 出来なくて\n[01:31.20]\n[01:31.27]上手く愛せるようにと\n[01:37.66]あの空に 祈っている\n[01:47.50]\n[01:47.53]ねぇ 知りたくても\n[01:52.08]知り尽くせないことばかりで\n[01:59.10]\n[01:59.17]だから 1つにならない\n[02:03.21]2つの体を 精一杯 抱きしめた\n[02:11.10]\n[02:11.16]あなたがいる それだけで\n[02:16.22]もう世界が変わってしまう\n[02:25.11]\n[02:25.21]モノトーンの 景色が\n[02:31.89]ほら 鮮やかに映る\n[02:36.60]\n[02:36.64]いつの間にか 離れていた\n[02:43.06]手をつないで 歩いてく\n[02:51.10]\n[02:51.16]上手く愛せているかなぁ\n[02:57.45]あの空に 聞いてみるの\n[03:05.00]\n[03:05.05]いつか離ればなれになる 日がきても\n[03:15.29]あなたを想った 日々があれば それでいい\n[03:30.60]\n[03:30.66]いつか離れた意味を\n[03:36.03]知る 日が来るよ\n[03:40.69]約束するから 明日へ\n[03:53.50]\n[03:53.59]『愛している 愛している\n[04:00.00]世界が終わるまで』\n[04:08.00]\n[04:08.01]馬鹿げてると 笑いながら\n[04:14.29]口に出してみて\n[04:18.80]\n[04:18.90]愛している そんなことが\n[04:25.48]簡単には 出来なくて\n[04:33.60]\n[04:33.68]上手く愛せるようにと\n[04:39.85]あの空に 祈っている\n[04:46.17]あの空に 祈っている\n"
        },
        {
            title: '一生所爱',
            author: '卢冠廷,莫文蔚',
            url: 'http://music.163.com/song/media/outer/url?id=25707139.mp3',
            pic: 'http://p1.music.126.net/ZwOyxtml-t4cra3hRy7CkQ==/6634453162971822.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 唐书琛\n[00:01.000] 作曲 : 卢冠廷\n[00:38.988]从前现在过去了再不来\n[00:46.887]红红落叶长埋尘土内\n[00:55.057]开始终结总是没变改\n[01:06.689]天边的你飘泊白云外\n[01:14.388]苦海翻起爱恨\n[01:23.689]在世间难逃避命运\n[01:32.177]相亲竟不可接近\n[01:42.189]或我应该相信是缘分\n[02:28.480]情人别后永远再不来(消散的情缘)\n[02:37.766]无言独坐放眼尘世外(愿来日再续)\n[02:45.570]鲜花虽会凋谢(只愿)但会再开(为你)\n[02:54.487]一生所爱隐约(守候)在白云外(期待)\n[03:04.737]苦海翻起爱恨\n[03:13.487]在世间难逃避命运\n[03:22.718]相亲竟不可接近\n[03:31.576]或我应该相信是缘分\n[03:41.576]苦海翻起爱恨\n[03:51.099]在世间难逃避命运\n[03:59.536]相亲竟不可接近\n[04:08.487]或我应该相信是缘分\n'
        },
        {
            title: '世间美好与你环环相扣',
            author: '柏松',
            url: 'http://music.163.com/song/media/outer/url?id=1363948882.mp3',
            pic: 'http://p1.music.126.net/DK1_4sP_339o5rowMdPXdw==/109951164071024476.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 尹初七[00:01.000] 作曲 : 柏松[00:02.000] 编曲 : 彭圣杰[00:15.554][00:28.054]偏偏秉烛夜游[00:31.054]午夜星辰 似奔走之友[00:34.554]爱你每个结痂伤口[00:37.554]酿成的陈年烈酒[00:40.804][00:41.804]入喉尚算可口[00:44.803]怎么泪水 还偶尔失守[00:48.553]邀你细看心中缺口[00:51.053]裂缝中留存 温柔[00:55.804][00:57.553]此时已莺飞草长 爱的人正在路上[01:01.802]我知他风雨兼程 途经日暮不赏[01:05.552]穿越人海 只为与你相拥[01:11.552]此刻已皓月当空 爱的人手捧星光[01:15.302]我知他乘风破浪 去了黑暗一趟[01:19.052]感同身受 给你救赎热望[01:25.302][01:26.052]知道你不能 还要你感受[01:29.802]让星光加了一点彩虹[01:32.802]让樱花偷偷 吻你额头[01:36.553]让世间美好 与你环环相扣[01:41.303][01:42.052]此时已莺飞草长 爱的人正在路上[01:46.302]我知他风雨兼程 途经日暮不赏[01:50.302]穿越人海 只为与你相拥[01:55.802]此刻已皓月当空 爱的人手捧星光[01:59.802]我知他乘风破浪 去了黑暗一趟[02:04.052]感同身受 给你救赎热望[02:09.051][02:09.551]此时已莺飞草长 爱的人正在路上[02:13.550]我知他风雨兼程 途经日暮不赏[02:17.801]穿越人海 只为与你相拥[02:23.301]此刻已皓月当空 爱的人手捧星光[02:27.550]我知他乘风破浪 去了黑暗一趟[02:31.551]感同身受 给你救赎热望[02:37.051][02:38.300]知道你不能 还要你感受[02:41.300]让星光加了一点彩虹[02:44.800]当樱花开的纷纷扬扬[02:48.301]当世间美好 与你环环相扣[02:58.300]特别鸣谢:槿葵,我们的海报制作妹妹。[03:05.554]原唱:柏松[03:06.055]吉他:柏松[03:07.054]和声:柏松[03:07.804]录音:柏松[03:08.804]混音:张强'
        },
        {
            title: '理想三旬',
            author: '陈鸿宇',
            url: 'http://music.163.com/song/media/outer/url?id=31445772.mp3',
            pic: 'http://p1.music.126.net/cqTTEPAaxXG3cOwaE4E_-g==/109951163104103366.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 唐映枫[00:00.113] 作曲 : 陈鸿宇[00:00.226] 编曲 : 陈鸿宇/马雨阳[00:00.340]混音:马雨阳[00:01.340]雨后有车驶来[00:03.510]驶过暮色苍白[00:06.090]旧铁皮往南开 恋人已不在[00:10.890]收听浓烟下的 诗歌电台[00:15.700]不动情的咳嗽 至少看起来[00:20.420]归途也还可爱[00:22.870]琴弦少了姿态[00:25.160]再不见那夜里 听歌的小孩[00:30.170]时光匆匆独白[00:32.380]将颠沛磨成卡带[00:34.810]已枯卷的情怀 踏碎成年代[00:39.970][00:49.170]就老去吧 孤独别醒来[00:54.650][00:55.310]你渴望的离开[00:59.540]只是无处停摆[01:03.700]就歌唱吧 眼睛眯起来[01:09.858]而热泪的崩坏[01:14.218]只是没抵达的存在[01:18.650][01:37.090]青春又醉倒在[01:39.840]籍籍无名的怀[01:42.200]靠嬉笑来虚度 聚散得慷慨[01:46.989]辗转却去不到 对的站台[01:51.890]如果漂泊是成长 必经的路牌[01:56.530]你迷醒岁月中[01:58.840]那贫瘠的未来[02:01.418]像遗憾季节里 未结果的爱[02:05.808]弄脏了每一页诗[02:08.310]吻最疼痛的告白[02:10.859]而风声吹到这 已不需要释怀[02:15.718]就老去吧 孤独别醒来[02:20.598][02:21.869]你渴望的离开[02:26.000]只是无处停摆[02:30.138]就歌唱吧 眼睛眯起来[02:36.000]而热泪的崩坏[02:40.220]只是没抵达的存在[02:47.239][03:06.019]就甜蜜地忍耐[03:08.459]繁星润湿窗台[03:10.878]光影跳动着像在 困倦里说爱[03:15.679]再无谓的感慨[03:18.348]以为明白[03:20.418]梦倒塌的地方 今已爬满青苔'
        },
        {
            title: '不浪漫罪名',
            author: '王杰',
            url: 'http://music.163.com/song/media/outer/url?id=1897928897.mp3',
            pic: 'http://p2.music.126.net/Wi2OW9TnEODyLDYH6gpcdg==/109951166656499933.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 陈少琪[00:01.000] 作曲 : 王杰[00:13.38][00:15.38]没有花 这刹那被破坏吗[00:22.46]无野火都会温暖吗[00:27.23]无烟花一起庆祝好吗[00:31.00][00:33.01]若爱恋 彷似戏剧那样假[00:39.79]如布景一切都美化[00:44.66]连相拥都参照主角吗[00:48.67][00:50.59]你说我未能定时 令你每天欢笑一次[00:57.89]我没说出一句美丽台词[01:01.83]是你心中一种缺陷定义[01:05.98]流进了眼角里的刺[01:08.29][01:09.14]为何不浪漫亦是罪名 为何不轰烈是件坏事情[01:16.66]从来未察觉我每个动作 没有声都有爱你的铁证[01:24.41]为何苦不浪漫亦是罪名 为何总等待着特别事情[01:31.99]从来未察觉我语气动听 在我呼吸声早已说明[01:40.72]甚么都会用一生保证[01:48.17][01:52.13]没有花 这刹那被破坏吗[01:59.04]无野火都会温暖吗[02:03.95]无烟花一起庆祝好吗[02:07.99][02:09.44]若爱恋 彷似戏剧那样假[02:16.57]如布景一切都美化[02:21.25]连相拥都参照主角吗[02:25.83][02:27.30]你说我未能定时 令你每天欢笑一次[02:34.73]我没说出一句美丽台词[02:38.57]是你心中一种缺陷定义[02:42.64]流进了眼角里的刺[02:45.15][02:45.87]为何不浪漫亦是罪名 为何不轰烈是件坏事情[02:53.28]从来未察觉我每个动作 没有声都有爱你的铁证[03:01.15]为何苦不浪漫亦是罪名 为何总等待著特别事情[03:08.65]从来未察觉我语气动听 在我呼吸声早已说明[03:17.43]什么都会用一生保证[03:25.41][03:39.74]为何不浪漫亦是罪名 为何不轰烈是件坏事情[03:46.55]从来未察觉我每个动作 没有声都有爱你的铁证[03:54.23]为何苦不浪漫亦是罪名 为何总等待著特别事情[04:01.98]从来未察觉我语气动听 在我呼吸声早已说明[04:10.68]什么都会用一生保证[04:21.10]'
        },
        {
            title: '樱花树下',
            author: '张敬轩',
            url: 'http://music.163.com/song/media/outer/url?id=28111647.mp3',
            pic: 'http://p1.music.126.net/MbAMGidLob2YUEsw732PXw==/18815942488049510.jpg?param=300x300',
            lrc: '[00:00.000] 作词 : 林若宁[00:01.000] 作曲 : 伍卓贤[00:18.27]树荫有一只蝉 跌落你身边[00:24.23]惊慌到失足向前[00:28.37]然后扑入我一双肩[00:31.72]令你腼腆一脸 像樱花万千[00:38.00]怀念美好高中两年[00:41.63]期望你的青春不变[00:45.35]去到今天[00:50.16]还记得樱花正开[00:53.20]还未懂跟你示爱[00:57.46]初春来时彼此约定过 继续期待[01:03.38]人置身这大时代[01:06.57]投入几番竞技赛[01:09.95]曾分开曾相爱[01:13.20]等待花蕊又跌下来[01:19.12]才洞悉这是恋爱[01:23.42][01:41.73]未有过的爱情 但有种温馨[01:48.28]归家那单车小径[01:51.19]沿路细听你的歌声[01:54.94]没法再三倾听  你的感动昵称[02:01.61]维系错的一番友情[02:04.89]无奈已经不可纠正[02:08.28]太过坚贞[02:11.56]还记得樱花正开[02:14.86]还未懂跟你示爱[02:19.05]初春来时彼此闭着眼  渴望未来[02:24.93]人置身这大时代[02:28.21]投入几番竞技赛[02:31.58]曾分开曾相爱[02:34.89]等待跟你未爱的爱[02:40.75]你说悲不悲哀[02:44.27]秒速之间变改 小小世界[02:49.23]眷恋也许走不过 拆卸的街[02:56.90]少女亦随年渐长 走得多么快[03:03.58][03:13.45]如有天樱花再开[03:16.67]期望可跟你示爱[03:20.76]当天园林 今天已换上满地青苔[03:26.74]如有天置地门外[03:29.88]乘电车跨过大海[03:34.43]匆匆跟你相望一眼 没理睬[03:44.25]明日花 昨日已开[03:53.11]'
        },
        {
            title: '因为你在',
            author: '达闻西乐队,福禄寿FloruitShow',
            url: 'http://music.163.com/song/media/outer/url?id=1424233886.mp3',
            pic: 'http://p1.music.126.net/XxR9CFRRllgJIQaYx6xs-Q==/109951164719060149.jpg?param=300x300',
            lrc: '[00:00.00]因为你在 - 达闻西乐队/福禄寿FloruitShow[00:00.19]词:猴子[00:00.24]曲:猴子[00:00.30]制作人:吴涛[00:00.37]编曲:达闻西乐队/福禄寿FloruitShow[00:00.55]主唱:合成器[00:00.62]合声:猴子/福禄寿FloruitShow[00:00.75]吉他:猴子/老黑[00:00.86]贝斯:大鹏[00:00.92]鼓:小盛[00:00.98]缩混/母带:吴涛[00:01.08]录音棚:每个人自己家[00:01.21]曾有一瞬间[00:04.20]恐惧环绕身边[00:07.15]因为有你在[00:10.11]让我更勇敢[00:13.10]曾有一瞬间[00:16.10]泪水擦过我的脸[00:19.20]你飞奔而来[00:22.17]触摸我指尖[00:25.33]这个冬天[00:28.34]使命在召唤[00:31.36]时间停滞[00:34.18]期待的双眼[00:37.11]回头的瞬间[00:40.24]为什么感觉[00:43.25]其实我不孤单[00:49.91]原来是 你啊[00:53.37]还有你啊[00:57.36]背负着一样的痛[01:01.94]大家一起啊[01:05.28]快一起啊[01:09.32]拥抱着同样的梦[01:15.35]绝不能轻易说放弃[01:19.98]因为你在[01:25.90]因为你在[01:31.22]所有的爱[01:34.32]凝聚成力量[01:37.19]所有的语言[01:40.19]连接着心跳[01:43.41]直到明天[01:46.22]和你一起分享[01:49.29]胜利的喜悦[01:52.21]我才能心安[01:55.25]每当我醒来[01:58.13]空气清新温暖[02:01.16]谁起的灯火[02:04.17]谁打开的窗[02:07.08]每当我转身[02:10.37]耀眼的光芒[02:13.14]是谁点燃希望[02:19.92]原来是 你啊[02:23.35]还有你啊[02:27.44]背负着一样的痛[02:31.99]大家一起啊[02:35.29]快一起啊[02:39.34]拥抱着同样的梦[02:44.10]我想和你啊[02:47.26]想和你啊[02:51.35]手牵着手一起出发[02:55.94]我要和你啊[02:59.33]要和你啊[03:03.33]手牵着手一起回家[03:07.24]因为有你在[03:10.09]因为有你在[03:13.11]黑夜不再寒冷[03:16.03]我变的更勇敢[03:19.22]因为有你在[03:22.06]因为有你在[03:25.10]爱凝聚成希望[03:28.10]传递给我力量[03:31.06]因为有你在[03:34.14]因为有你在[03:37.11]黑夜不再寒冷[03:40.11]我变的更勇敢[03:43.24]因为有你在[03:46.12]因为有你在[03:49.12]爱凝聚成希望[03:52.11]传递给我力量[03:55.24]因为有你在[03:58.12]因为有你在[04:00.96]黑夜不再寒冷[04:04.06]我变的更勇敢[04:07.24]因为有你在[04:10.09]因为有你在[04:13.04]爱凝聚成希望[04:16.10]传递给我力量[04:21.59]爱永远不会消失[04:25.98]因为你在[04:31.91]因为你在'
        },
        {
            title: '悬溺',
            author: '葛东琪',
            url: 'http://music.163.com/song/media/outer/url?id=1397345903.mp3',
            pic: 'http://p1.music.126.net/CDhYcShQKH2VAMENuCxWWQ==/109951164166513349.jpg?param=300x300',
            lrc: "[00:00.000] 作词 : 葛东琪[00:01.000] 作曲 : 葛东琪[00:02.93]编曲 : 葛东琪[00:31.43]我主张制止不了就放任[00:38.07]这欲望与绝望之争[00:44.64]余温她却喜欢过门[00:50.26]临走呢[00:52.13]还随手关了灯[00:56.33]So funny[00:57.14]Ya i ya i ya i ya i ya i ya i ya[01:00.38]Ya i ya i ya i ya i[01:03.67]Ya i ya i ya i ya i ya i ya i ya[01:07.06]It's so funny ya i ya i[01:10.40]Ya i ya i ya i ya i ya i ya i ya[01:13.64]Ya i ya i ya i ya i[01:17.09]It's so funny ya i ya i ya i ya i ya[01:20.43]Ya i ya i ya i ya i[01:51.39]我主张克制不了就放任[01:58.11]悬上该有的天真[02:04.69]起伏在于喜怒哀乐[02:10.36]松了绳[02:12.18]大不了无人问[02:17.13]Ya i ya i ya i ya i ya i ya i ya[02:20.43]Ya i ya i ya i ya i[02:23.72]Ya i ya i ya i ya i ya i ya i ya[02:27.05]It's so funny ya i ya i[02:30.45]Ya i ya i ya i ya i ya i ya i ya[02:33.74]Ya i ya i ya i ya[02:37.08]It's so funny ya i ya i ya i ya i ya[02:40.41]Ya i ya i ya i ya[02:42.29]有什么话要说[03:14.19]录音师 : 葛东琪[03:15.22]混音师 : 葛东琪[03:16.05]制作人 : 葛东琪"
        }
        
    ]
});
ap.init();
</script>

三、定位查找标签


步骤是先定位标签,再通过正则查到定义的方法,最后再截取到music区域

    def script(self):

        # 利用find_all()方法,定位script标签,再通过正则表达式以及截取和替换方法,截取的区域
        script = self.soup().find_all("script",type="text/javascript")[1]
        result1 = re.search(r'new\s+APlayer+(\(.+?\));', script.string, flags=re.S).group(1)\
                .split("music: ")[1].split("})")[0]\
                .replace('  ', '').replace('\'','\"')\
                .replace('title:', '\"title\":').replace('author:', '\"author\":').replace('url:', '\"url\":').replace('pic:', '\"pic\":').replace('lrc:', '\"lrc\":')\
                .replace('Callin\"','Callin\'').replace('It\"s','It\'s').replace('\n', '')

        return result1

1. 定位标签

"script",type="text/javascript")[1]

2. 正则表达式

re.search(r'new\s+APlayer+(\(.+?\));', script.string, flags=re.S).group(1)

解释代码

  • \s+: + 表示匹配前面的空白字符(空格、制表符、回车等等),\s 是一个特殊符号,表示一个空白字符(空格、制表符、回车等等)。\s+ 表示匹配一个或多个空白字符
  • script.string 表示 script 标签中第一段连续的文本,此处用script.text代替亦可
    ([.+?]) 组成如下:
  • [.+?]是这个正则表达式的一个捕获组,它表示匹配一个左中括号和一个右中括号之间的任意字符
  • 接下来只需要使用一个圆括号来包裹。圆括号表示一个捕获组。使用圆括号可以将匹配的内容分组,方便后续操作。在这个例子中,圆括号将[.+?] 包含在内,表示将其作为一个整体进行匹配。圆括号()将需要提取的结果包裹起来,因此我们可以使用group(1)来提取这个结果
  • 圆括号内的 \ 则是用来转义 [] 中的字符,使其不被解读为元字符
  • 正则表达式最后的“;”是因为locaitons变量的值是以 ; 结尾,所以加了上去

3. 截取到music区域
此处代码比较杂,经过本人多次调试才截取成功,新手一枚,见谅
为什么调试这么多次呢,因为最后我要把这个str类型的数据转变为dict类型(dict此处有坑

.split("music: ")[1].split("})")[0]\
                .replace('  ', '').replace('\'','\"')\
                .replace('title:', '\"title\":').replace('author:', '\"author\":').replace('url:', '\"url\":').replace('pic:', '\"pic\":').replace('lrc:', '\"lrc\":')\
                .replace('Callin\"','Callin\'').replace('It\"s','It\'s').replace('\n', '')
【输出结果:此时结果是str类型的数据】
[{"title": "イエスタデイ(翻自 Official髭男dism)","author": "茶泡饭,春茶,kobasolo","url": "http://music.163.com/song/media/outer/url?id=1397542479.mp3","pic": "http://p1.music.126.net/gEarimK0TLuMp7NTimU8bA==/109951164432885419.jpg?param=300x300","lrc": "[00:00.000] 作词 : 藤原聡[00:01.000] 作曲 : 藤原聡[00:17.108]何度失ったって[00:20.572]取り返して見せるよ[00:23.773]雨上がり 虹がかかった空みたいな[00:29.471]君の笑みを[00:31.638]例えばその代償に[00:34.698]誰かの表情を[00:37.534]曇らせてしまったっていい[00:41.121]悪者は僕だけでいい[00:45.278]本当はいつでも[00:47.769]誰もと思いやりあっていたい[00:52.417]でもそんな悠長な理想論は[00:55.074]ここで捨てなくちゃな[01:01.100][01:01.779]遥か先で 君へ 狙いを定めた恐怖を[01:09.969]どれだけ僕は[01:11.834]はらい切れるんだろう?[01:15.715][01:16.510]半信半疑で 世間体[01:21.059]気にしてばっかのイエスタデイ[01:24.779]ポケットの中で怯えたこの手は[01:30.103]まだ忘れられないまま[01:35.030][01:36.431]「何度傷ついたって[01:39.935]仕方ないよ」と言って[01:43.214]うつむいて君が溢した[01:47.695]儚くなまぬるい涙[01:51.198]ただの一粒だって[01:54.118]僕を不甲斐なさで 溺れさせて[01:58.814]理性を奪うには十分過ぎた[02:04.244][02:04.484]街のクラクションもサイレンも[02:08.657]届きやしないほど[02:11.520][02:11.777]遥か先へ進め 身勝手すぎる恋だと[02:20.073]世界が後ろから指差しても[02:25.621][02:26.677]振り向かず進め必死で[02:31.165]君の元へ急ぐよ[02:34.959]道の途中で聞こえたSOS さえ[02:41.381]気づかないふりで[02:46.677][03:13.081]バイバイイエスタデイ ごめんね[03:17.362]名残惜しいけど行くよ[03:21.061]いつかの憧れと違う僕でも[03:27.419]ただ1人だけ 君だけ[03:32.113]守るための強さを[03:35.764]何よりも望んでいた この手に今[03:43.287][03:44.207]遥か先へ進め[03:48.734]幼すぎる恋だと[03:52.454]世界が後ろから指差しても[03:58.806]迷わずに進め 進め[04:03.462]2人だけの宇宙へと[04:07.114]ポケットの中で震えたこの手で今[04:13.610]君を連れ出して[04:15.400]未来の僕は知らない[04:19.003]だから視線は止まらない[04:22.603]謎めいた表現技法[04:25.339]意味深な君の気性[04:28.496][04:29.762]アイラブユーさえ[04:31.314]風に 飛ばされそうな時でも[04:36.740]不器用ながら繋いだ この手はもう[04:43.260]決して離さずに[04:46.837]虹の先へ"},{"title": "模様 (TV size ver.)","author": "Ivy to Fraudulent Game","url": "http://music.163.com/song/media/outer/url?id=1379857331.mp3","pic": "http://p2.music.126.net/2xfr0JtK2fuYzdZbFgbWaw==/109951167351098841.jpg?param=300x300","lrc": "[00:00.000] 作词 : 寺口 宣明\n[00:00.150] 作曲 : 寺口 宣明\n[00:00.300]流れに逆らって \n[00:03.725]何かにぶつかって \n[00:06.788]色は変わっているけど\n[00:11.101]鳞の傷は \n[00:14.098]光を受けて \n[00:16.849]模様みたいに綺麗だった\n[00:25.223]言葉を持ってしまった \n[00:28.233]僕らの体は \n[00:31.276]鮮やかじゃないけど\n[00:35.559]重ねた傷も \n[00:38.521]あの痛みさえも \n[00:41.194]僕にとっての模様だった\n[01:05.999]最近ではこの街も少し分かってきた\n[01:18.335]カバンだとか優しさまでもが邪魔になるよ\n[01:30.519]もう少し早く歩くために捨てたのに\n[01:42.767]忘れ物したような顔して立ち止まるのはなぜ\n[01:53.855]流れに飲まれて \n[01:56.925]たどり着く先で \n[01:59.966]何が見えるのだろう\n[02:04.184]届かぬ光と \n[02:07.225]もがきもせずに \n[02:09.897]身を委ねて \n[02:14.821]沈んでゆく\n[02:18.247]言葉を持ってしまった \n[02:21.391]僕らの心は \n[02:24.470]雑草にまみれて\n[02:28.580]でもその中でやっと見つけた \n[02:34.367]夜更けに咲く小さい花\n[02:43.919]いつも角を曲がるたびに \n[02:48.167]後ろ振り向くたびに\n[02:52.991]見えなくなるもの \n[02:56.007]会えなくなる人\n[02:59.094]それでも選んだ場所へと \n[03:05.247]痛みの中で歩いてきた\n[03:40.897]流れに逆らって \n[03:43.918]何かにぶつかって \n[03:46.975]色は変わっているけど\n[03:51.165]鳞の傷は \n[03:54.241]光を受けて \n[03:56.870]模様みたいに綺麗だった\n[04:05.347]言葉を持ってしまった \n[04:08.338]僕らの体は \n[04:11.377]鮮やかじゃないけど\n[04:15.712]重ねた傷も \n[04:18.666]あの痛みさえも \n[04:21.361]僕にとっての模様になる\n[04:34.746]一つだけの模様になる\n"},{"title": "桜","author": "河口恭吾","url": "http://music.163.com/song/media/outer/url?id=26082994.mp3","pic": "http://p1.music.126.net/-WCvjo0FPtBHCCy7--GIgw==/2485995790424396.jpg?param=300x300","lrc": "[00:00.000] 作词 : 河口京吾\n[00:01.000] 作曲 : 河口京吾\n[00:49.119]僕が そばにいるよ\n[00:56.069]君を 笑わせるから\n[01:02.969]桜舞う季節かぞえ\n[01:10.069]君と 歩いていこう\n[01:15.120]\n[01:17.320]僕が そばにいるよ\n[01:24.128]君を 笑わせるから\n[01:31.228]桜舞う季節かぞえ\n[01:38.429]君と 歩いていこう\n[01:43.529]\n[01:50.540]まぶしい朝は 何故か切なくて\n[02:04.691]理由をさがすように 君を見つめていた\n[02:18.894]涙の夜は 月の光に 震えていたよ\n[02:37.236]二人で\n[02:41.986]\n[02:48.737]僕が そばにいるよ\n[02:56.087]君を 笑わせるから\n[03:02.988]空のない街抜け出し\n[03:09.989]虹を 探しに行こう\n[03:15.189]\n[03:17.089]いつも そばにいるよ\n[03:24.290]君を 笑わせるから\n[03:31.140]やわらかな風に吹かれ\n[03:38.192]君と 歩いていこう\n[03:45.244]君と 歩いていこう\n[03:50.396]\n[04:01.718]君がいる\n[04:08.718]君がいる\n[04:13.817]いつも そばにいるよ\n[04:34.703]\n"},{"title": "愛してる","author": "高鈴","url": "http://music.163.com/song/media/outer/url?id=756701.mp3","pic": "http://p2.music.126.net/MqglIg8tvEH2-l71z5OIcg==/109951166200431065.jpg?param=300x300","lrc": "[00:00.000] 作词 : Takane Yamamoto\n[00:01.000] 作曲 : Callin'\n[00:14.80]\n[00:14.85]ねぇ もう少しだけ\n[00:19.25]もう少しだけ 聞いていてほしい\n[00:27.31]\n[00:27.41]ねぇ もう少しだけ\n[00:32.02]もう少しだけ わがままいいですか?\n[00:39.70]\n[00:39.72]手にいれた途端に 消えてしまいそう\n[00:46.55]言葉を くれませんか?\n[00:51.10]\n[00:51.16]『愛している 愛している\n[00:57.70]世界が終わるまで』\n[01:05.51]\n[01:05.61]馬鹿げてると 笑いながら\n[01:12.14]口に出してみて\n[01:16.80]\n[01:16.89]愛している そんなことが\n[01:23.32]簡単には 出来なくて\n[01:31.20]\n[01:31.27]上手く愛せるようにと\n[01:37.66]あの空に 祈っている\n[01:47.50]\n[01:47.53]ねぇ 知りたくても\n[01:52.08]知り尽くせないことばかりで\n[01:59.10]\n[01:59.17]だから 1つにならない\n[02:03.21]2つの体を 精一杯 抱きしめた\n[02:11.10]\n[02:11.16]あなたがいる それだけで\n[02:16.22]もう世界が変わってしまう\n[02:25.11]\n[02:25.21]モノトーンの 景色が\n[02:31.89]ほら 鮮やかに映る\n[02:36.60]\n[02:36.64]いつの間にか 離れていた\n[02:43.06]手をつないで 歩いてく\n[02:51.10]\n[02:51.16]上手く愛せているかなぁ\n[02:57.45]あの空に 聞いてみるの\n[03:05.00]\n[03:05.05]いつか離ればなれになる 日がきても\n[03:15.29]あなたを想った 日々があれば それでいい\n[03:30.60]\n[03:30.66]いつか離れた意味を\n[03:36.03]知る 日が来るよ\n[03:40.69]約束するから 明日へ\n[03:53.50]\n[03:53.59]『愛している 愛している\n[04:00.00]世界が終わるまで』\n[04:08.00]\n[04:08.01]馬鹿げてると 笑いながら\n[04:14.29]口に出してみて\n[04:18.80]\n[04:18.90]愛している そんなことが\n[04:25.48]簡単には 出来なくて\n[04:33.60]\n[04:33.68]上手く愛せるようにと\n[04:39.85]あの空に 祈っている\n[04:46.17]あの空に 祈っている\n"},{"title": "一生所爱","author": "卢冠廷,莫文蔚","url": "http://music.163.com/song/media/outer/url?id=25707139.mp3","pic": "http://p1.music.126.net/ZwOyxtml-t4cra3hRy7CkQ==/6634453162971822.jpg?param=300x300","lrc": "[00:00.000] 作词 : 唐书琛\n[00:01.000] 作曲 : 卢冠廷\n[00:38.988]从前现在过去了再不来\n[00:46.887]红红落叶长埋尘土内\n[00:55.057]开始终结总是没变改\n[01:06.689]天边的你飘泊白云外\n[01:14.388]苦海翻起爱恨\n[01:23.689]在世间难逃避命运\n[01:32.177]相亲竟不可接近\n[01:42.189]或我应该相信是缘分\n[02:28.480]情人别后永远再不来(消散的情缘)\n[02:37.766]无言独坐放眼尘世外(愿来日再续)\n[02:45.570]鲜花虽会凋谢(只愿)但会再开(为你)\n[02:54.487]一生所爱隐约(守候)在白云外(期待)\n[03:04.737]苦海翻起爱恨\n[03:13.487]在世间难逃避命运\n[03:22.718]相亲竟不可接近\n[03:31.576]或我应该相信是缘分\n[03:41.576]苦海翻起爱恨\n[03:51.099]在世间难逃避命运\n[03:59.536]相亲竟不可接近\n[04:08.487]或我应该相信是缘分\n"},{"title": "世间美好与你环环相扣","author": "柏松","url": "http://music.163.com/song/media/outer/url?id=1363948882.mp3","pic": "http://p1.music.126.net/DK1_4sP_339o5rowMdPXdw==/109951164071024476.jpg?param=300x300","lrc": "[00:00.000] 作词 : 尹初七[00:01.000] 作曲 : 柏松[00:02.000] 编曲 : 彭圣杰[00:15.554][00:28.054]偏偏秉烛夜游[00:31.054]午夜星辰 似奔走之友[00:34.554]爱你每个结痂伤口[00:37.554]酿成的陈年烈酒[00:40.804][00:41.804]入喉尚算可口[00:44.803]怎么泪水 还偶尔失守[00:48.553]邀你细看心中缺口[00:51.053]裂缝中留存 温柔[00:55.804][00:57.553]此时已莺飞草长 爱的人正在路上[01:01.802]我知他风雨兼程 途经日暮不赏[01:05.552]穿越人海 只为与你相拥[01:11.552]此刻已皓月当空 爱的人手捧星光[01:15.302]我知他乘风破浪 去了黑暗一趟[01:19.052]感同身受 给你救赎热望[01:25.302][01:26.052]知道你不能 还要你感受[01:29.802]让星光加了一点彩虹[01:32.802]让樱花偷偷 吻你额头[01:36.553]让世间美好 与你环环相扣[01:41.303][01:42.052]此时已莺飞草长 爱的人正在路上[01:46.302]我知他风雨兼程 途经日暮不赏[01:50.302]穿越人海 只为与你相拥[01:55.802]此刻已皓月当空 爱的人手捧星光[01:59.802]我知他乘风破浪 去了黑暗一趟[02:04.052]感同身受 给你救赎热望[02:09.051][02:09.551]此时已莺飞草长 爱的人正在路上[02:13.550]我知他风雨兼程 途经日暮不赏[02:17.801]穿越人海 只为与你相拥[02:23.301]此刻已皓月当空 爱的人手捧星光[02:27.550]我知他乘风破浪 去了黑暗一趟[02:31.551]感同身受 给你救赎热望[02:37.051][02:38.300]知道你不能 还要你感受[02:41.300]让星光加了一点彩虹[02:44.800]当樱花开的纷纷扬扬[02:48.301]当世间美好 与你环环相扣[02:58.300]特别鸣谢:槿葵,我们的海报制作妹妹。[03:05.554]原唱:柏松[03:06.055]吉他:柏松[03:07.054]和声:柏松[03:07.804]录音:柏松[03:08.804]混音:张强"},{"title": "理想三旬","author": "陈鸿宇","url": "http://music.163.com/song/media/outer/url?id=31445772.mp3","pic": "http://p1.music.126.net/cqTTEPAaxXG3cOwaE4E_-g==/109951163104103366.jpg?param=300x300","lrc": "[00:00.000] 作词 : 唐映枫[00:00.113] 作曲 : 陈鸿宇[00:00.226] 编曲 : 陈鸿宇/马雨阳[00:00.340]混音:马雨阳[00:01.340]雨后有车驶来[00:03.510]驶过暮色苍白[00:06.090]旧铁皮往南开 恋人已不在[00:10.890]收听浓烟下的 诗歌电台[00:15.700]不动情的咳嗽 至少看起来[00:20.420]归途也还可爱[00:22.870]琴弦少了姿态[00:25.160]再不见那夜里 听歌的小孩[00:30.170]时光匆匆独白[00:32.380]将颠沛磨成卡带[00:34.810]已枯卷的情怀 踏碎成年代[00:39.970][00:49.170]就老去吧 孤独别醒来[00:54.650][00:55.310]你渴望的离开[00:59.540]只是无处停摆[01:03.700]就歌唱吧 眼睛眯起来[01:09.858]而热泪的崩坏[01:14.218]只是没抵达的存在[01:18.650][01:37.090]青春又醉倒在[01:39.840]籍籍无名的怀[01:42.200]靠嬉笑来虚度 聚散得慷慨[01:46.989]辗转却去不到 对的站台[01:51.890]如果漂泊是成长 必经的路牌[01:56.530]你迷醒岁月中[01:58.840]那贫瘠的未来[02:01.418]像遗憾季节里 未结果的爱[02:05.808]弄脏了每一页诗[02:08.310]吻最疼痛的告白[02:10.859]而风声吹到这 已不需要释怀[02:15.718]就老去吧 孤独别醒来[02:20.598][02:21.869]你渴望的离开[02:26.000]只是无处停摆[02:30.138]就歌唱吧 眼睛眯起来[02:36.000]而热泪的崩坏[02:40.220]只是没抵达的存在[02:47.239][03:06.019]就甜蜜地忍耐[03:08.459]繁星润湿窗台[03:10.878]光影跳动着像在 困倦里说爱[03:15.679]再无谓的感慨[03:18.348]以为明白[03:20.418]梦倒塌的地方 今已爬满青苔"},{"title": "不浪漫罪名","author": "王杰","url": "http://music.163.com/song/media/outer/url?id=1897928897.mp3","pic": "http://p2.music.126.net/Wi2OW9TnEODyLDYH6gpcdg==/109951166656499933.jpg?param=300x300","lrc": "[00:00.000] 作词 : 陈少琪[00:01.000] 作曲 : 王杰[00:13.38][00:15.38]没有花 这刹那被破坏吗[00:22.46]无野火都会温暖吗[00:27.23]无烟花一起庆祝好吗[00:31.00][00:33.01]若爱恋 彷似戏剧那样假[00:39.79]如布景一切都美化[00:44.66]连相拥都参照主角吗[00:48.67][00:50.59]你说我未能定时 令你每天欢笑一次[00:57.89]我没说出一句美丽台词[01:01.83]是你心中一种缺陷定义[01:05.98]流进了眼角里的刺[01:08.29][01:09.14]为何不浪漫亦是罪名 为何不轰烈是件坏事情[01:16.66]从来未察觉我每个动作 没有声都有爱你的铁证[01:24.41]为何苦不浪漫亦是罪名 为何总等待着特别事情[01:31.99]从来未察觉我语气动听 在我呼吸声早已说明[01:40.72]甚么都会用一生保证[01:48.17][01:52.13]没有花 这刹那被破坏吗[01:59.04]无野火都会温暖吗[02:03.95]无烟花一起庆祝好吗[02:07.99][02:09.44]若爱恋 彷似戏剧那样假[02:16.57]如布景一切都美化[02:21.25]连相拥都参照主角吗[02:25.83][02:27.30]你说我未能定时 令你每天欢笑一次[02:34.73]我没说出一句美丽台词[02:38.57]是你心中一种缺陷定义[02:42.64]流进了眼角里的刺[02:45.15][02:45.87]为何不浪漫亦是罪名 为何不轰烈是件坏事情[02:53.28]从来未察觉我每个动作 没有声都有爱你的铁证[03:01.15]为何苦不浪漫亦是罪名 为何总等待著特别事情[03:08.65]从来未察觉我语气动听 在我呼吸声早已说明[03:17.43]什么都会用一生保证[03:25.41][03:39.74]为何不浪漫亦是罪名 为何不轰烈是件坏事情[03:46.55]从来未察觉我每个动作 没有声都有爱你的铁证[03:54.23]为何苦不浪漫亦是罪名 为何总等待著特别事情[04:01.98]从来未察觉我语气动听 在我呼吸声早已说明[04:10.68]什么都会用一生保证[04:21.10]"},{"title": "樱花树下","author": "张敬轩","url": "http://music.163.com/song/media/outer/url?id=28111647.mp3","pic": "http://p1.music.126.net/MbAMGidLob2YUEsw732PXw==/18815942488049510.jpg?param=300x300","lrc": "[00:00.000] 作词 : 林若宁[00:01.000] 作曲 : 伍卓贤[00:18.27]树荫有一只蝉 跌落你身边[00:24.23]惊慌到失足向前[00:28.37]然后扑入我一双肩[00:31.72]令你腼腆一脸 像樱花万千[00:38.00]怀念美好高中两年[00:41.63]期望你的青春不变[00:45.35]去到今天[00:50.16]还记得樱花正开[00:53.20]还未懂跟你示爱[00:57.46]初春来时彼此约定过 继续期待[01:03.38]人置身这大时代[01:06.57]投入几番竞技赛[01:09.95]曾分开曾相爱[01:13.20]等待花蕊又跌下来[01:19.12]才洞悉这是恋爱[01:23.42][01:41.73]未有过的爱情 但有种温馨[01:48.28]归家那单车小径[01:51.19]沿路细听你的歌声[01:54.94]没法再三倾听你的感动昵称[02:01.61]维系错的一番友情[02:04.89]无奈已经不可纠正[02:08.28]太过坚贞[02:11.56]还记得樱花正开[02:14.86]还未懂跟你示爱[02:19.05]初春来时彼此闭着眼渴望未来[02:24.93]人置身这大时代[02:28.21]投入几番竞技赛[02:31.58]曾分开曾相爱[02:34.89]等待跟你未爱的爱[02:40.75]你说悲不悲哀[02:44.27]秒速之间变改 小小世界[02:49.23]眷恋也许走不过 拆卸的街[02:56.90]少女亦随年渐长 走得多么快[03:03.58][03:13.45]如有天樱花再开[03:16.67]期望可跟你示爱[03:20.76]当天园林 今天已换上满地青苔[03:26.74]如有天置地门外[03:29.88]乘电车跨过大海[03:34.43]匆匆跟你相望一眼 没理睬[03:44.25]明日花 昨日已开[03:53.11]"},{"title": "因为你在","author": "达闻西乐队,福禄寿FloruitShow","url": "http://music.163.com/song/media/outer/url?id=1424233886.mp3","pic": "http://p1.music.126.net/XxR9CFRRllgJIQaYx6xs-Q==/109951164719060149.jpg?param=300x300","lrc": "[00:00.00]因为你在 - 达闻西乐队/福禄寿FloruitShow[00:00.19]词:猴子[00:00.24]曲:猴子[00:00.30]制作人:吴涛[00:00.37]编曲:达闻西乐队/福禄寿FloruitShow[00:00.55]主唱:合成器[00:00.62]合声:猴子/福禄寿FloruitShow[00:00.75]吉他:猴子/老黑[00:00.86]贝斯:大鹏[00:00.92]鼓:小盛[00:00.98]缩混/母带:吴涛[00:01.08]录音棚:每个人自己家[00:01.21]曾有一瞬间[00:04.20]恐惧环绕身边[00:07.15]因为有你在[00:10.11]让我更勇敢[00:13.10]曾有一瞬间[00:16.10]泪水擦过我的脸[00:19.20]你飞奔而来[00:22.17]触摸我指尖[00:25.33]这个冬天[00:28.34]使命在召唤[00:31.36]时间停滞[00:34.18]期待的双眼[00:37.11]回头的瞬间[00:40.24]为什么感觉[00:43.25]其实我不孤单[00:49.91]原来是 你啊[00:53.37]还有你啊[00:57.36]背负着一样的痛[01:01.94]大家一起啊[01:05.28]快一起啊[01:09.32]拥抱着同样的梦[01:15.35]绝不能轻易说放弃[01:19.98]因为你在[01:25.90]因为你在[01:31.22]所有的爱[01:34.32]凝聚成力量[01:37.19]所有的语言[01:40.19]连接着心跳[01:43.41]直到明天[01:46.22]和你一起分享[01:49.29]胜利的喜悦[01:52.21]我才能心安[01:55.25]每当我醒来[01:58.13]空气清新温暖[02:01.16]谁起的灯火[02:04.17]谁打开的窗[02:07.08]每当我转身[02:10.37]耀眼的光芒[02:13.14]是谁点燃希望[02:19.92]原来是 你啊[02:23.35]还有你啊[02:27.44]背负着一样的痛[02:31.99]大家一起啊[02:35.29]快一起啊[02:39.34]拥抱着同样的梦[02:44.10]我想和你啊[02:47.26]想和你啊[02:51.35]手牵着手一起出发[02:55.94]我要和你啊[02:59.33]要和你啊[03:03.33]手牵着手一起回家[03:07.24]因为有你在[03:10.09]因为有你在[03:13.11]黑夜不再寒冷[03:16.03]我变的更勇敢[03:19.22]因为有你在[03:22.06]因为有你在[03:25.10]爱凝聚成希望[03:28.10]传递给我力量[03:31.06]因为有你在[03:34.14]因为有你在[03:37.11]黑夜不再寒冷[03:40.11]我变的更勇敢[03:43.24]因为有你在[03:46.12]因为有你在[03:49.12]爱凝聚成希望[03:52.11]传递给我力量[03:55.24]因为有你在[03:58.12]因为有你在[04:00.96]黑夜不再寒冷[04:04.06]我变的更勇敢[04:07.24]因为有你在[04:10.09]因为有你在[04:13.04]爱凝聚成希望[04:16.10]传递给我力量[04:21.59]爱永远不会消失[04:25.98]因为你在[04:31.91]因为你在"},{"title": "悬溺","author": "葛东琪","url": "http://music.163.com/song/media/outer/url?id=1397345903.mp3","pic": "http://p1.music.126.net/CDhYcShQKH2VAMENuCxWWQ==/109951164166513349.jpg?param=300x300","lrc": "[00:00.000] 作词 : 葛东琪[00:01.000] 作曲 : 葛东琪[00:02.93]编曲 : 葛东琪[00:31.43]我主张制止不了就放任[00:38.07]这欲望与绝望之争[00:44.64]余温她却喜欢过门[00:50.26]临走呢[00:52.13]还随手关了灯[00:56.33]So funny[00:57.14]Ya i ya i ya i ya i ya i ya i ya[01:00.38]Ya i ya i ya i ya i[01:03.67]Ya i ya i ya i ya i ya i ya i ya[01:07.06]It's so funny ya i ya i[01:10.40]Ya i ya i ya i ya i ya i ya i ya[01:13.64]Ya i ya i ya i ya i[01:17.09]It's so funny ya i ya i ya i ya i ya[01:20.43]Ya i ya i ya i ya i[01:51.39]我主张克制不了就放任[01:58.11]悬上该有的天真[02:04.69]起伏在于喜怒哀乐[02:10.36]松了绳[02:12.18]大不了无人问[02:17.13]Ya i ya i ya i ya i ya i ya i ya[02:20.43]Ya i ya i ya i ya i[02:23.72]Ya i ya i ya i ya i ya i ya i ya[02:27.05]It's so funny ya i ya i[02:30.45]Ya i ya i ya i ya i ya i ya i ya[02:33.74]Ya i ya i ya i ya[02:37.08]It's so funny ya i ya i ya i ya i ya[02:40.41]Ya i ya i ya i ya[02:42.29]有什么话要说[03:14.19]录音师 : 葛东琪[03:15.22]混音师 : 葛东琪[03:16.05]制作人 : 葛东琪"}]

<class 'str'>

四、转换格式

格式转化是这里面的大坑,导致我虽然截取了music区域,但是一直转化不成功总是报错,查找原因就是我截取的music代码段有很多不符合转化格式的错误数据,需要我一一排查,不断地进行替换截取代码,上一步代码就是截取的过程

    def json(self):

        items = json.loads(self.script())

        # print(items)
        return items

一开始我使用json.loads,发现报错,json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line x column x,后来就加了一个方法dumps

items = json.loads(json.dumps(self.script()))

参考文章:作者:小雏菊的成长- 《生产环境json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line x column x***

但是发现转完格式的类型却是list,不是我想要的dict类型,后来又网上查找资料才发现原来Python JSON 数组就是list类型,转不了dict类型

# 例子,Python JSON 数组就是list类型,转不了dict类型
person = [{"name": "John Doe","age": 28,"city":"New York"},{"name": "Jane Doe","age": 22,"city":"California"},{"name": "Doe Son","age": 18,"city":"Virginia"}]

参考文章:作者:小白PHP程序员-《Python 处理 JSON 数据的详细指南*****

五、提取数据并json输出结果

    def data(self):

        for i in self.json():

            titleName = i['title']
            urlName = i['url']
            dic = {
                'titleName': titleName,
                'urlName': urlName
            }
            self.dic["list"].append(dic)

            with open("爬虫.json", 'w', encoding='utf8') as f:
                json.dump(self.dic, f, ensure_ascii=False, indent=4)

生成json文件,如下:

完整代码如下:


import re
import requests
import json
from bs4 import BeautifulSoup as bs
from ast import literal_eval


class BS:

    def __init__(self):

        self.url = "https://www.cnblogs.com/xxx.html"
        self.dic = {
            "list": []
        }

    def soup(self):

        res = requests.get(self.url)
        soup = bs(res.text, 'html.parser')
        return soup


    def script(self):

        # 定位script标签
        script = self.soup().find_all("script",type="text/javascript")[1]
        result1 = re.search(r'new\s+APlayer+(\(.+?\));', script.string, flags=re.S).group(1)\
                .split("music: ")[1].split("})")[0]\
                .replace('  ', '').replace('\'','\"')\
                .replace('title:', '\"title\":').replace('author:', '\"author\":').replace('url:', '\"url\":').replace('pic:', '\"pic\":').replace('lrc:', '\"lrc\":')\
                .replace('Callin\"','Callin\'').replace('It\"s','It\'s').replace('\n', '')
        return result1

    def json(self):

        items = json.loads(self.script())
        return items

    def data(self):

        for i in self.json():

            titleName = i['title']
            urlName = i['url']
            print(titleName)
            dic = {
                'titleName': titleName,
                'urlName': urlName
            }
            self.dic["list"].append(dic)

            with open("爬虫.json", 'w', encoding='utf8') as f:
                json.dump(self.dic, f, ensure_ascii=False, indent=4)

if __name__ == '__main__':
    print(BS().data())

六、附录

参考其他的文章:

posted @ 2024-08-27 16:45  Owen_ET  阅读(77)  评论(0编辑  收藏  举报