爬取bilibiliTop100条热门视频信息并将数据导出至xls,同时加入反反爬虫技术
时间: 2023-12-06 15:43:31 浏览: 78
网络爬虫,抓取视频信息
4星 · 用户满意度95%
为了爬取B站热门视频信息并导出至xls,我们可以使用Python编写爬虫脚本,并使用第三方库BeautifulSoup和xlwt。
以下是代码示例:
```python
import requests
from bs4 import BeautifulSoup
import xlwt
import time
# 设置请求头,模拟浏览器访问
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 Edge/16.16299'
}
# 设置反反爬虫策略,限制访问频率
def delay_request():
time.sleep(1)
# 创建Excel文件
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet = book.add_sheet('bilibili_top100', cell_overwrite_ok=True)
# 添加表头
sheet.write(0, 0, '排名')
sheet.write(0, 1, '视频标题')
sheet.write(0, 2, 'UP主')
sheet.write(0, 3, '播放量')
sheet.write(0, 4, '弹幕数')
sheet.write(0, 5, '点赞数')
# 爬取数据并写入Excel文件
row = 1
for page in range(1, 6):
url = f'https://www.bilibili.com/v/popular/rank/all#/{page}'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
video_list = soup.select('.rank-item')
for item in video_list:
rank = item.select_one('.num').text
title = item.select_one('.title').text
author = item.select_one('.detail .info a').text
play_count = item.select_one('.detail .watch-num').text
danmu_count = item.select_one('.detail .dm-num').text
like_count = item.select_one('.detail .like').text
sheet.write(row, 0, rank)
sheet.write(row, 1, title)
sheet.write(row, 2, author)
sheet.write(row, 3, play_count)
sheet.write(row, 4, danmu_count)
sheet.write(row, 5, like_count)
row += 1
delay_request()
# 保存Excel文件
book.save('bilibili_top100.xls')
```
在代码中,我们使用了requests库进行网络请求,并使用BeautifulSoup库解析HTML页面。同时,通过设置请求头和限制访问频率的策略,可以有效防止反爬虫机制。
最后,我们将爬取到的数据写入Excel文件并保存。
阅读全文