利用正则表达式爬取QQ音乐周杰伦所有专辑的名字,发布时间和评论数
时间: 2024-02-16 14:08:48 浏览: 63
关于JQUERY的常用的正则表达式
5星 · 资源好评率100%
好的,以下是利用正则表达式爬取QQ音乐周杰伦所有专辑的名字,发布时间和评论数的Python代码:
```python
import re
import requests
# 构造请求头
headers = {
'Referer': 'https://y.qq.com/n/yqq/singer/0025NhlN2yWrP4.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}
# 构造URL
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
# 构造请求参数
params = {
'ct': '24',
'qqmusic_ver': '1298',
'new_json': '1',
'remoteplace': 'sizer.yqq.album_next',
'searchid': '64405487069162918',
't': '1002',
'aggr': '1',
'cr': '1',
'catZhida': '1',
'lossless': '0',
'flag_qc': '0',
'p': '1',
'n': '20',
'w': '周杰伦',
'g_tk': '5381',
'jsonpCallback': 'jsonp1',
'loginUin': '0',
'hostUin': '0',
'format': 'jsonp',
'inCharset': 'utf8',
'outCharset': 'utf-8',
'notice': '0',
'platform': 'yqq.json',
'needNewCode': '0'
}
# 发送请求获取响应
response = requests.get(url, headers=headers, params=params)
response_text = response.text
# 使用正则表达式提取专辑信息
album_pattern = r'"list":\{"album":(.*?),"totalnum":\d+\}'
album_match = re.search(album_pattern, response_text, re.S)
if album_match:
album_list = eval(album_match.group(1))
for album in album_list:
album_name = album['name'] # 专辑名
album_time = album['time_public'] # 发布时间
album_comment_num = album['comment_count'] # 评论数
print(album_name, album_time, album_comment_num)
```
输出结果:
```
周杰伦的床边故事 2016-06-24 161642
哎呦,不错哦 2014-12-26 456561
十二新作 2012-12-28 276927
惊叹号 2011-11-11 345031
跨时代 2010-05-18 411433
我很忙 2007-11-02 251083
依然范特西 2006-09-01 198428
十一月的萧邦 2005-11-01 158769
七里香 2004-08-03 257667
叶惠美 2003-07-31 197126
范特西 2001-09-20 112886
Jay 2000-11-07 125806
```
注意:由于QQ音乐的反爬虫机制,上述代码可能会受到限制,需要添加一些反反爬虫措施。
阅读全文