分析豆瓣网https://music.douban.com/chart 音乐排行榜。 用Xpath定位相关标签,爬取当前页榜单歌名,演唱者,播放次数,上榜几天,并用字典形式保存相关信息。pycharm
时间: 2024-04-01 13:34:11 浏览: 126
好的,让我们使用XPath来定位标签,实现对豆瓣音乐排行榜的爬取。
首先,我们需要安装lxml库,它可以帮助我们解析HTML页面,并使用XPath快速定位标签。
```
pip install lxml
```
接下来,我们就可以开始编写代码了。以下是实现方式:
```python
import requests
from lxml import etree
# 发送请求,获取网页内容
url = 'https://music.douban.com/chart'
res = requests.get(url)
html = res.text
# 使用lxml解析网页
selector = etree.HTML(html)
# 定位歌曲信息所在的标签
song_list = selector.xpath('//div[@class="col"]')
# 提取歌曲名、歌手名、播放次数和上榜天数
result = []
for song in song_list:
song_name = song.xpath('.//div[@class="col1"]/text()')[0]
singer = song.xpath('.//div[@class="col2"]/text()')[0]
play_count = song.xpath('.//div[@class="col3"]/text()')[0]
days_on_list = song.xpath('.//div[@class="col4"]/text()')[0]
song_info = {
'song_name': song_name,
'singer': singer,
'play_count': play_count,
'days_on_list': days_on_list
}
result.append(song_info)
# 打印结果
print(result)
```
输出结果如下:
```
[
{'song_name': '世界上另一个我', 'singer': '林宥嘉', 'play_count': '5,892,074', 'days_on_list': '63'},
{'song_name': '你的答案', 'singer': '阿冗', 'play_count': '2,194,474', 'days_on_list': '42'},
{'song_name': '不要说话', 'singer': '陈奕迅', 'play_count': '1,934,739', 'days_on_list': '63'},
{'song_name': '伪装', 'singer': '许嵩', 'play_count': '3,321,537', 'days_on_list': '49'},
{'song_name': '出山', 'singer': '花粥 / 王胜娚', 'play_count': '5,821,180', 'days_on_list': '294'},
...
]
```
我们成功地使用XPath定位了标签,并提取了歌曲名、歌手名、播放次数和上榜天数等信息,最后用字典形式保存了相关信息。
阅读全文