學習爬蟲的第二天——分頁爬取并存入表中

閱讀提示:我現在還在嘗試爬靜態頁面

一、分頁爬取模式

以豆瓣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.pswp.cn/diannao/75665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75665.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75665.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第 8 章:使用更好的庫_《C++性能優化指南》_notes

使用更好的庫 第八章核心知識點解析編譯與測試建議總結優化原則重點內容:第一部分:多選題(10題)第二部分:設計題答案與解析多選題答案:設計題答案示例(部分): 測試用例設…

RabbitMQ 學習整理1 - 基礎使用

項目代碼:RabbitMQDemo: 學習RabbitMQ的一些整理 基本概念 RabbitMQ是一種基于AMQP協議的消息隊列實現框架RabbitMQ可以用于在系統與系統之間或者微服務節點之間,進行消息緩存,消息廣播,消息分配以及限流消峰處理RabbitMQ-Serve…

React組件簡介

組件 在 React 中,組件(Component) 是 UI 的基本構建塊。可以把它理解為一個獨立的、可復用的 UI 單元,類似于函數,它接受輸入(props),然后返回 React 元素來描述 UI。 組件的簡單…

Kafka消息序列化深度革命:構建高性能、高安全的自定義編碼體系

一、突破默認序列化的桎梏 1.1 原生序列化器的致命缺陷 Kafka默認提供的StringSerializer/ByteArraySerializer在復雜場景下暴露三大痛點: 類型安全黑洞:字節流缺乏元數據描述,消費端解析如履薄冰版本兼容困境:數據結構變更導致…

向量數據庫與傳統數據庫的差異

向量數據庫是一種專門設計用于高效存儲、管理和檢索**向量數據(高維數值數組)**的數據庫系統。它針對非結構化數據(如圖像、文本、音頻)的特征進行優化,通過將數據轉化為向量嵌入(embeddings)&a…

自動化框架的設計與實現

一、自動化測試框架 在大部分測試人員眼中只要沾上“框架”,就感覺非常神秘,非常遙遠。大家之所以覺得復雜,是因為落地運用起來很復雜;每個公司,每個業務及產品線的業務流程都不一樣,所以就導致了“自動化…

SpringBoot 3+ Lombok日志框架從logback改為Log4j2

r要將Spring Boot 3項目中的日志框架從Logback切換到Log4j2&#xff0c;并配置按日期滾動文件和控制臺輸出&#xff0c;請按照以下步驟操作&#xff1a; 步驟 1&#xff1a;排除Logback并添加Log4j2依賴 在pom.xml中修改依賴&#xff1a; <dependencies><!-- 排除默…

①、環境準備-主流技術(IPS/FW/主備-主主快速切換)

主流技術&(IPS/FW/主備-主主快速切換&#xff09; 一、RBM主備方案 RBM-FW-P 主配置內容介紹-注釋 remote-backup group 含義&#xff1a;定義了一個遠程備份組。這表明設備支持某種形式的遠程備份功能&#xff0c;用于在設備之間同步配置或數據。data-channel interface …

量化交通擁堵

指數&#xff1a; 基于嚴重擁堵里程比的指數和基于出行時間比的指數。 評價指標是飽和度&#xff08;VC比&#xff09;&#xff0c;它表示交通量與通行能力的比值。 飽和度可分為道路飽和度和路口飽和度。道路飽和度還會進一步分級&#xff0c;有四檔和六檔之分。 城市道路和…

PDF與Markdown的量子糾纏:一場由VLM導演的文檔界奇幻秀

緣起:當格式界的"泰坦尼克號"撞上"黑客帝國" 某個月黑風高的夜晚,在"二進制酒吧"的霓虹燈下: PDF(西裝革履地晃著威士忌): “我的每一頁都像瑞士手表般精密,連華爾街的禿鷲都為我傾倒!” Markdown(穿著帶洞的拖鞋): “得了吧老古董!…

【neo4j數據導出并在其他電腦導入】

停止服務 neo4j stop 導出 neo4j-admin database dump neo4j --to-path"C:\Users\12901\Downloads\test folder" 導入 將 .dump 文件放在一個目錄中 mkdir /root/dump-directory mv /root/neo4j.dump /root/dump-directory/ 使用包含 .dump 文件的目錄路徑作為 …

前端使用WPS WebOffice 做在線文檔預覽與編輯

先附上官網 WebOffice SDK 1、在下面這個地方找到jdk&#xff0c;然后下載 按照 2、只需要把jdk下載下來&#xff0c;放到項目中&#xff0c;然后引入到項目中就可以了&#xff0c;在wps 官網創建個應用&#xff0c;然后把appId放到代碼中就可以了&#xff0c;等待后端把回調…

跨語言微服務架構(Java、Python)——“API中臺”

文章目錄 一、引言二、系統架構概述2.1 統一單點登錄&#xff08;SSO&#xff09;與權限管理設計2.2 API中臺與數據中臺的融合2.3 跨語言適配器與 JWT 認證機制 三、技術細節與工具選型3.1 SSO 系統的選型與實現3.2 微服務架構與 API 中臺的實現3.3 跨語言適配器實現與技術難點…

DeepSeek V3-0324升級:開啟人機共創新紀元

一、技術平權&#xff1a;開源協議重構AI權力格局 DeepSeek V3選擇MIT協議開源6850億參數模型&#xff0c;本質上是一場針對技術壟斷的“數字起義”。這一決策的深層影響在于&#xff1a; 商業邏輯的重構 閉源AI公司依賴API收費的商業模式面臨根本性挑戰。當頂級模型能力可通過…

QOpenGLWidget視頻畫面上繪制矩形框

一、QPainter繪制 在QOpenGLWidget中可以繪制,并且和OpenGL的內容疊在一起。paintGL里面繪制完視頻后,解鎖資源,再用QPainter繪制矩形框。這種方式靈活性最好。 void VideoGLWidget::paintGL() {glClear(GL_COLOR_BUFFER_BIT);m_program.bind();//繪制視頻數據// 解綁VAOg…

3.3 Taylor公式

1.定義 1.1 taylor公式 1.2 麥克勞林公式 1.3 推論 1.4 拉格朗日余項和皮亞諾型余項 2. 例題 3.幾種特殊函數的麥克勞林展開

CEF 給交互函數, 添加控制臺是否顯示交互參數log開關

CEF 控制臺添加一函數,枚舉 注冊的供前端使用的CPP交互函數有哪些 CEF 多進程模式時,注入函數,獲得交互信息-CSDN博客 這兩篇文章,介紹了注入函數,在控制臺中顯示 各自提供的交互函數信息。 有些場景下,我們還需要更詳細的信息,比如想知道 彼此傳遞的參數, 如果每次調…

QTcpSocket多線程連接慢問題

20250325記錄 環境&#xff1a;Qt5.14.2 64位 msvc編譯 在多線程環境下&#xff0c;使用QTcpSocket實現客戶端&#xff0c;發現在少部分電腦上&#xff0c;連接時間過長&#xff0c;定時器檢查套接字狀態時&#xff0c;發現連接處于QAbstractSocket::ConnectingState狀態。 …

IntelliJ IDEA創建Maven工程

1、創建空工程 1&#xff09;創建 2&#xff09;配置JDK和Maven 2、創建Maven工程 3、Maven工程結構簡介 1&#xff09;目錄 pom.xml 2&#xff09;窗口 4、參考 08.IDEA配置本地Maven軟件_嗶哩嗶哩_bilibili

(UI自動化測試web端)第二篇:元素定位的方法_css定位之class選擇器

看代碼里的【find_element_by_css_selector( )】( )里的表達式怎么寫&#xff1f; 文章介紹了第二種寫法class選擇器。你要根據網頁中的實際情況來判斷自己到底要用哪一種方法來進行元素定位。每種方法都要多練習&#xff0c;全都熟了之后你在工作當中使用起來元素定位時&#…