学习爬虫的第二天——分页爬取并存入表中

server/2025/3/30 3:11:55/

阅读提示:我现在还在尝试爬静态页面

一、分页爬取模式

以豆瓣Top250为例:

  • 基础url:豆瓣电影 Top 250https://movie.douban.com/top250

  • 分页参数:?start=0(第一页)、?start=25(第二页)等

  • 每页显示25条数据,共10页

二、数据存取

Excel文件存储

  • pandas
  • openpyxl

2.1 openpyxl基本操作

from openpyxl import Workbook# 创建新工作簿
wb = Workbook()# 获取活动工作表(默认创建的第一个工作表)
ws = wb.active# 创建新工作表
ws1 = wb.create_sheet("MySheet1")  # 默认插入到最后
ws2 = wb.create_sheet("MySheet2", 0)  # 插入到第一个位置# 重命名工作表
ws.title = "New Title"
# 保存工作簿
wb.save("example.xlsx")# 加载现有工作簿
from openpyxl import load_workbook
wb = load_workbook("example.xlsx")
# 写入数据
ws['A1'] = "Hello"  # 单个单元格
ws.cell(row=1, column=2, value="World")  # 行列指定# 读取数据
print(ws['A1'].value)  # 输出: Hello
print(ws.cell(row=1, column=2).value)  # 输出: World# 批量写入
for row in range(1, 11):for col in range(1, 5):ws.cell(row=row, column=col, value=row*col)

三、爬取代码

import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
import timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
def GetFilm():base_url="https://movie.douban.com/top250"movies = []for start in range(0,250,25):url=f"{base_url}?start={start}"print(f"正在爬取: {url}")try:res=requests.get(url,headers=headers)soup=BeautifulSoup(res.text,'html.parser')items=soup.find_all('div',class_="item")for item in items:rank=item.find('em').texttitle=item.find('span',class_='title').textrating = item.find('span', class_='rating_num').textquote = item.find('p', class_='quote').text if item.find('p', class_='quote') else ""movies.append([rank,title,rating,quote])#添加延迟time.sleep(2)except Exception as e:print(f"爬取{url}时出错: {e}")continuereturn movies  # 确保返回列表
top_movies=GetFilm()
# 创建Excel工作簿
wb = Workbook()
ws = wb.active# 添加表头
headers = ['排名', '电影名称', '评分', '短评']
ws.append(headers)# 添加数据
for movie in top_movies:ws.append(movie)# 保存Excel文件
excel_file = 'douban_top250_openpyxl.xlsx'
wb.save(excel_file)
print(f"数据已成功保存到 {excel_file}")

结果:


http://www.ppmy.cn/server/179563.html

相关文章

ESP32驱动BMP280和MQ4传感器

文章目录 前言 一、硬件准备 所需组件 连接方式: 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中,传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…

【机器学习】imagenet2012 数据预处理数据预处理

【机器学习】数据预处理 1. 下载/解压数据2. 数据预处理3. 加载以及训练代码3.1 使用PIL等加载代码3.2 使用OpenCV的方式来一张张加载代码3.3 h5的方式来加载大文件 最后总结 这个数据大约 140个G,128w的训练集 1. 下载/解压数据 首先需要下载数据: 数据最后处理…

React 组件之间的通信

React 组件通信 对于 React 组件之间的通信,我们首先了解一下 React 组件通信的设计理念。 单向数据流(Unidirectional Data Flow) 数据流向明确: 在 React 中,数据总是从父组件流向子组件(通过 Props 传…

3ds Max 2026 新功能全面解析

一、视口性能与交互体验升级 1. Hydra 2.0 视口渲染引擎 3ds Max 2026 引入了 Hydra 2.0,大幅优化了视口渲染性能,尤其是在处理复杂场景和高质量实时预览时,流畅度提升显著。 支持USD(通用场景描述)格式&#xff0c…

【GPUStack】【dify】【RAGflow】:本地部署GPUStack并集成到dify和RAGflow

目录 Nvidia-Driver CUDA NVIDIA Container Toolkit(新版本的docker不用安装,自带) Docker 部署GPUStack Text Embeddings 部署模型库模型 测试 部署开源模型(modelscope) dify 集成 RAGflow集成 Nvidia-Dri…

WEB安全--SQL注入--利用log写入webshell

一、原理: 这也是对之前文章的补充:WEB安全--SQL注入--INTO OUTFILE-CSDN博客 我们可以通过修改MySQL的log文件,用select关键字写入木马文件放在服务器物理地址中,通过访问物理地址getshell。 二、条件: 用户有写入权限…

手绘的思维导图怎么转成电子版思维导图?分享今年刚测试出来的方法

看到一份思维导图很好看,但是有点看不清了,怎么可以复制出新的思维导图?手绘的思维导图怎么转成电子版思维导图? 这时候可以把图片复制成一份可编辑的思维导图文件,我说下解决图片转换成思维导图的思路。只要原图片比…

[学习笔记]攻防世界-bug

打开场景,提示我们需要登陆 我们先注册一下 注册成功 我们登陆进去 我们点击Manage他提示我们admin才能进入 我们刷新抓包一下试试 Cookie里面除了PHPSESSID,多出来了一个user,看上去是md5加密的,我们尝试解密 这里尝试了好几个网…