import requests from lxml import etree import csv import pandas 对酷狗新歌榜爬取
时间: 2024-11-15 15:22:07 浏览: 3
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
使用上述Python库进行酷狗新歌榜的爬取,你可以结合`requests`获取网页源代码,`lxml`解析HTML树结构,`csv`或`pandas`将数据存储或转换为CSV或Excel文件。以下是基本的步骤:
1. **导入库**:
```python
import requests
from lxml import etree
import csv
import pandas as pd # 如果你不习惯使用csv,也可以选择直接读写Excel,这里用pandas方便些
```
2. **发送请求并获取HTML**:
```python
url = 'http://music.kugou.com/new/songlist.htm'
headers = {'User-Agent': 'Mozilla/5.0'} # 设置合适的用户代理头,避免被识别为机器人
response = requests.get(url, headers=headers)
html = response.text
```
3. **解析HTML**:
```python
parser = etree.HTMLParser()
tree = etree.fromstring(html, parser)
# 找到包含歌曲信息的部分,这里同样假设歌曲信息在特定class的元素内
song_list = tree.xpath('//div[@class="song-item"]')
```
4. **提取数据**:
```python
songs = []
for song_item in song_list:
title = song_item.xpath('.//a[@class="title"]/text()')[0] # 提取歌曲名
artist = song_item.xpath('.//span[@class="artist"]/text()')[0] # 提取歌手名
# 将数据添加到列表中,如果需要更多字段,继续类似提取
songs.append([title, artist])
```
5. **保存数据**:
```python
# 用csv写入文件
with open('kugou_new_songs.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['歌曲名称', '歌手'])
writer.writerows(songs)
# 或者用pandas DataFrame存储
df = pd.DataFrame(songs, columns=['歌曲名称', '歌手'])
df.to_csv('kugou_new_songs.csv', index=False) # 转换为CSV
```
6. **注意事项**:
- 遵循网站的robots.txt规则,不要过于频繁地访问以免引起服务器压力。
- 如果遇到动态加载的内容(如AJAX),可能需要分析实际请求的API或者使用第三方库如Selenium。
阅读全文