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

打印 上一主题 下一主题

主题 1864|帖子 1864|积分 5596

阅读提示:我现在还在尝试爬静态页面
一、分页爬取模式

以豆瓣Top250为例:


  • 根本url:豆瓣影戏 Top 250
    https://movie.douban.com/top250
  • 分页参数:?start=0(第一页)、?start=25(第二页)等
  • 每页显示25条数据,共10页
二、数据存取

Excel文件存储


  • pandas
  • openpyxl
2.1 openpyxl基本操纵
  1. from openpyxl import Workbook
  2. # 创建新工作簿
  3. wb = Workbook()
  4. # 获取活动工作表(默认创建的第一个工作表)
  5. ws = wb.active
  6. # 创建新工作表
  7. ws1 = wb.create_sheet("MySheet1")  # 默认插入到最后
  8. ws2 = wb.create_sheet("MySheet2", 0)  # 插入到第一个位置
  9. # 重命名工作表
  10. ws.title = "New Title"
  11. # 保存工作簿
  12. wb.save("example.xlsx")
  13. # 加载现有工作簿
  14. from openpyxl import load_workbook
  15. wb = load_workbook("example.xlsx")
  16. # 写入数据
  17. ws['A1'] = "Hello"  # 单个单元格
  18. ws.cell(row=1, column=2, value="World")  # 行列指定
  19. # 读取数据
  20. print(ws['A1'].value)  # 输出: Hello
  21. print(ws.cell(row=1, column=2).value)  # 输出: World
  22. # 批量写入
  23. for row in range(1, 11):
  24.     for col in range(1, 5):
  25.         ws.cell(row=row, column=col, value=row*col)
复制代码
三、爬取代码

  1. import requests
  2. from bs4 import BeautifulSoup
  3. from openpyxl import Workbook
  4. import time
  5. headers = {
  6.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
  7.     }
  8. def GetFilm():
  9.     base_url="https://movie.douban.com/top250"
  10.     movies = []
  11.     for start in range(0,250,25):
  12.         url=f"{base_url}?start={start}"
  13.         print(f"正在爬取: {url}")
  14.         try:
  15.             res=requests.get(url,headers=headers)
  16.             soup=BeautifulSoup(res.text,'html.parser')
  17.             items=soup.find_all('div',class_="item")
  18.             for item in items:
  19.                 rank=item.find('em').text
  20.                 title=item.find('span',class_='title').text
  21.                 rating = item.find('span', class_='rating_num').text
  22.                 quote = item.find('p', class_='quote').text if item.find('p', class_='quote') else ""
  23.                 movies.append([
  24.                     rank,title,rating,quote
  25.                 ])
  26.             #添加延迟
  27.             time.sleep(2)
  28.         except Exception as e:
  29.              print(f"爬取{url}时出错: {e}")
  30.              continue
  31.     return movies  # 确保返回列表
  32. top_movies=GetFilm()
  33. # 创建Excel工作簿
  34. wb = Workbook()
  35. ws = wb.active
  36. # 添加表头
  37. headers = ['排名', '电影名称', '评分', '短评']
  38. ws.append(headers)
  39. # 添加数据
  40. for movie in top_movies:
  41.     ws.append(movie)
  42. # 保存Excel文件
  43. excel_file = 'douban_top250_openpyxl.xlsx'
  44. wb.save(excel_file)
  45. print(f"数据已成功保存到 {excel_file}")
复制代码
结果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表