多语言展示
当前在线:1736今日阅读:2今日分享:38

怎么用python爬数据

现在学习python的人应该都清楚,python有句口号叫“人生苦短,我学python”这句,这个的意思是认得一生太短暂,我们可以利用python缩短我们获取有价值的东西的时间。接下来我就教大家如何爬取自己想要的东西吧,希望对你们有所帮助!
工具/原料

pycharm

方法/步骤
1

第一步:我们先打开我们的python专用编辑工具pycharm软件,然后点击“新建”,然后在我们的页面输入以下代码:import requestsimport re  #正则import json  #字典def get_mp3_by_songid(songid)       api='http://musicapi.qianqian.com/v1/restserver/ting?method=baidu.ting.song.play&format=jsonp&callback=jQuery1720498963_76&songid=%s&_=34'%songi    response=requests.get(api    data=response.tex    data=re.findall(r'\((.*)\)',data)[0]    data=json.loads(data    print(data)    #获取歌曲的信息(名字,mp3地址)    mp3_name=data['songinfo']['title']  #该文件所在位置的递减阶级关系    mp3_url=data['bitrate']['file_link']    print(mp3_name)    print(mp3_url)     #发送http请求    response=requests.get(mp3_url)    print(response.content)     filename='%s.mp3'%mp3_name    with open('E:\\music\\%s.mp3'%filename,'wb') as f:   #爬取文件保存的位置        f.write(response.content)#根据查询的内容获取siddef get_sids_by_name(query):    api='http://music.baidu.com/search'    data={         'key':query    }    response=requests.get(api,params=data    html=response.tex    sids=re.findall(r'sid":(\d+),',html)  #获取歌曲id    return sids #将id返回回去sids=get_sids_by_name('大张伟')  #调用for sid in sids:  #循环爬取    get_mp3_by_songid(sid)

2

第二步:我们声明的“ef get_mp3_by_songid(songid):”是写一个函数,能够根据songid下载获取歌曲的mp3地址。

3

第三步:声明获取歌曲的下载地址函数之后,我们需要将我们的歌曲路径放在我们的api里面,然后利用requests进行访问。

4

第四步:然后我们需要获取歌曲的信息(名字,mp3地址),使用mp3_name=data['songinfo']['title']  #该文件所在位置的递减阶级关系mp3_url=data['bitrate']['file_link']print(mp3_name)print(mp3_url)

5

第五步:我们继续下一步,发送我们的http请求,括号里面的第二个值的作用是将返回的数据以二进制信息放在content里面response=requests.get(mp3_url)print(response.content)

6

第六步:我们的歌曲获取之后,我们需要给予它一个储存的路径,并将其永久化。其中open是指定储存的路径的作用。filename='%s.mp3'%mp3_namewith open('E:\\music\\%s.mp3'%filename,'wb') as f:      f.write(response.content)

7

第七步:根据查询的内容获取我们的siddef get_sids_by_name(query):       api='http://music.baidu.com/search'    data={         'key':query    }    response=requests.get(api,params=data    html=response.tex    sids=re.findall(r'sid":(\d+),',html)    return sids

8

第八步:这里我们指定爬取的内容是大张伟的歌曲sids=get_sids_by_name('大张伟')  #调用#print(sids)for sid in sids:  #循环爬取    get_mp3_by_songid(sid)

9

第九步:写完所有的代码之后,我们点击运行我们的程序,点击运行之后,我们进入我们的指定存储的爬取的内容保存的路径的文件夹内,就会发现我们的歌曲已经爬取到了。

推荐信息