网页抓取数据百度百科(Python爬取QQ音乐单曲之前分析目标(策略:url))

优采云 发布时间: 2022-01-30 11:24

  网页抓取数据百度百科(Python爬取QQ音乐单曲之前分析目标(策略:url))

  一、前言

  前段时间尝试爬取网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息。网易云音乐歌单通过iframe展示,iframe的页面元素可以借助Selenium获取。

  另一方面,QQ音乐采用异步加载方式,套路不同。这是主流的页面加载方式。爬起来有点难,但也是对自己的挑战。

  二、Python爬取QQ音乐单曲

  我之前看过的的一个视频,很好地解释了编写爬虫的一般步骤,我们也将遵循这一点。

  爬虫步骤

  1.确定目标

  首先,我们要明确目标。这次我们爬取了QQ音乐歌手刘德华的单曲。

  (百度百科)->分析目标(策略:url格式(范围)、数据格式、网页编码)->编写代码->执行爬虫

  2.分析目标

  歌曲链接:#tab=song&

  从左边的截图可以看到,歌曲信息是分页排列的,每页显示30条,一共30页。点击页码或最右边的“>”跳转到下一页,浏览器会向服务器发送异步ajax请求。从链接中,您可以看到 begin 和 num 参数,它们代表开始歌曲的下标(截图在第 2 页)。,起始下标为30),一页返回30,服务器响应返回json格式的歌​​曲信息(MusicJsonCallbacksinger_track({"code":0,"data":{"list":[{"Flisten_count1 ":...]})),如果只想单独获取歌曲信息,可以直接拼接链接请求,解析返回的json格式数据。这里没有使用直接解析数据格式的方法,我使用Python中的Selenium方法,获取并解析一页单条信息后,点击“>”跳转到下一页继续解析,直到解析完所有单条信息并记录下来。最后索取各单曲的链接,获取详细信息。单信息。

  右边的截图是网页的源代码。所有歌曲信息都在类名为 mod_songlist 的 div 的浮动层中。在类名为 songlist_list 的无序列表 ul 下,每个子元素 li 显示一首单曲,类名是 songlist__album 标签下的 a,收录单曲的链接、名称和时长等。

  3.写代码

  1)下载网页内容。这里使用的是Python的Urllib标准库,自己封装了一个下载方法:

<p> 1 def download(url, user_agent='wswp', num_retries=2):

2 if url is None:

3 return None

4 print('Downloading:', url)

5 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}

6 request = urllib.request.Request(url, headers=headers) # 设置用户代理wswp(Web Scraping with Python)

7 try:

8 html = urllib.request.urlopen(request).read().decode('utf-8')

9 except urllib.error.URLError as e:

10 print('Downloading Error:', e.reason)

11 html = None

12 if num_retries > 0:

13 if hasattr(e, 'code') and 500

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线