Python——爬取B站科技区排行并把数据存入Excel

本代码实现从B站科技区抓取Top100排名,并将数据保存至Excel文件,每分钟更新一次,记录排名变化,便于数据分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python——爬取B站科技区排行并把数据存入Excel

本代码可将B站的科技区的top100爬取下来,并将其数据存储到Excel文件中,具有良好的可移植性。
需要的库:

  • requests 用于请求连接到特定网站
  • BeautifulSoup 分析,处理得到的HTML代码
  • xlwt 将得到的数据存入Excel
  • time 延时

下载

直接在命令行中输入pip install+库名即可自动从网上下载安装
代码

import requests
import time
import xlwt
from bs4 import BeautifulSoup
workbook=xlwt.Workbook()
booksheet=workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
#新建Excel文件和工作表  
be=BeautifulSoup
def pa():
	r = requests.get('https://www.bilibili.com/ranking/all/36/1/3/?spm_id_from=333.334.ranking_technology.8')
	#传入URL
	soup = be(r.text, 'html.parser')
	pm_list = soup.find_all('li', attrs = {'class': 'rank-item'})
	# 解析URL
	for pm in pm_list:
		mc=pm.find('div',class_='num').text
		mz=pm.find('a',class_='title').text
		L.append(mc)
		M.append(mz)
	#将数据存入数组中
for x in range(100):
	L=[]
	M=[]
	pa()
	for i in range(len(L)):
		booksheet.write(i,0,L[i])
		booksheet.write(i,x,M[i])
	workbook.save('pc.xls')  
	#将数组中的数据存入当前目录下的Excel
	time.sleep(60)#每分钟爬取一次

更新
加了用时和爬取次数,以后添加数据变化显示

import requests
import time
import xlwt
import datetime
import sys
from bs4 import BeautifulSoup
workbook=xlwt.Workbook()
booksheet=workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
be=BeautifulSoup
for i in range(1,101):
	booksheet.write(i,0,i)
def pa():
	r = requests.get('https://www.bilibili.com/ranking/all/36/1/3/?spm_id_from=333.334.ranking_technology.8')
	soup = be(r.text, 'html.parser')
	pm_list = soup.find_all('li', attrs = {'class': 'rank-item'})
	for pm in pm_list:
		mc=pm.find('div',class_='num').text
		mz=pm.find('a',class_='title').text
		L.append(mc)
		M.append(mz)
mi=0
d1=datetime.datetime.now()
for x in range(100000):
	d2=datetime.datetime.now()
	booksheet.write(0,x+1,str(d2)[11:19])
	L=[]
	M=[]
	pa()
	for i in range(len(L)):
		booksheet.write(i+1,x+1,M[i])
	mi+=1
	sec=str(round((d2-d1).total_seconds()))
	time='已爬取'+str(mi)+'次,用时'+sec+'sec'
	sys.stdout.write("\r%s"%time)
	workbook.save('pc.xls')  
	time.sleep(60)

### 如何使用 Python 爬虫抓取动漫网数据 #### 技术准备 为了实现对动漫网数据抓取,需要掌握一些基本的技术栈和工具。以下是几个重要的方面: 1. **了解目标网的 HTML 结构** 使用浏览器开发者工具查看网页源代码,找到所需数据的具体位置及其标签属性。这一步对于定位要抓取的信息至关重要[^1]。 2. **选择合适的库** 常见的 Python 爬虫库有 `requests` 和 `BeautifulSoup` 或者更强大的框架如 Scrapy。如果涉及 JavaScript 动态渲染,则可能需要用到 Selenium 或 Playwright 来模拟浏览器行为[^4]。 3. **处理反爬虫机制** 很多现代网会设置各种防爬措施,比如 IP 封禁、验证码验证等。可以通过以下方法应对这些问题: - 设置请求头 (`User-Agent`) 模仿真实用户的访问行为; - 添加随机延迟时间减少被检测的风险; - 更换代理 IP 地址池规避频繁请求带来的封号风险; #### 实现过程详解 下面是一个简单的例子来演示如何利用 Requests 库配合 BeautifulSoup 解析静态页面提取有用信息: ```python import requests from bs4 import BeautifulSoup def fetch_anime_data(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 提取具体字段 titles = [] for item in soup.find_all('div', class_='anime-item'): title = item.a['title'] link = item.a['href'] rating = item.span.string titles.append({ "Title": title, "Link": f"http://example.com{link}", "Rating": rating }) return titles url = "http://example-anime-site.com" data = fetch_anime_data(url) for entry in data[:5]: print(entry) ``` 此脚本展示了从指定 URL 中获取动画名称链接及评分的过程[^1]。 当面对更加复杂的情况——例如 AJAX 加载或者 JavaScript 渲染的内容时,可以考虑采用 Headless Browser 方案。这里给出基于 Pyppeteer 的一段示范代码片段用于解决此类场景下的挑战[^4]: ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://dynamic-content.example'); let content = await page.evaluate(() => document.body.innerHTML); console.log(content); await browser.close(); })(); ``` 注意以上仅为伪代码示意,在实际操作前还需调整适配特定点逻辑。 --- #### 数据存储与后续分析 一旦成功收集到了足够的原始资料之后,就需要妥善保存它们以便进一步加工处理。可以选择 CSV 文件形式导出便于导入 Excel 表格软件做初步统计图表绘制工作;也可以存入数据库管理系统 MySQL/MongoDB 这样支持大规模查询检索的功能强大得多的方式来进行长期维护管理[^1]。 最后别忘了尊重版权法律条款规定,仅限个人研究学习用途范围内合理合法运用所获资讯哦!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值