【python爬蟲】豆瓣爬蟲學習

文章目錄

  • 網頁地址
  • 爬蟲目標
  • 技術棧
  • 爬蟲代碼
  • 注意事項


Python爬蟲學習:我們可以選擇一個相對簡單的網站進行數據抓取。這里以抓取“豆瓣電影Top250”的信息為例,這個網站提供了豐富的電影數據,包括電影名稱、評分、導演、演員等信息。
在這里插入圖片描述

網頁地址

  • https://movie.douban.com/top250

爬蟲目標

  • 抓取每部電影的名稱、評分、簡介和前幾位主演的名字。

技術棧

  1. Python 3.x
  2. requests:用于發送HTTP請求。
  3. BeautifulSoup4:用于解析HTML文檔。

爬蟲代碼

首先,確保你已經安裝了requestsbeautifulsoup4庫,如果沒有安裝,可以通過以下命令安裝:

pip install requests beautifulsoup4

以下是完整的爬蟲代碼:

# 導入requests庫用于發送HTTP請求
import requests
# 導入BeautifulSoup庫用于解析HTML文檔
from bs4 import BeautifulSoup# 定義一個函數用于獲取電影數據
def fetch_movie_data():# 設置請求的URL,這里是豆瓣電影Top 250的頁面url = "https://movie.douban.com/top250"# 設置請求頭,偽裝成瀏覽器訪問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.3'}# 發送GET請求,獲取頁面內容response = requests.get(url, headers=headers)# 使用BeautifulSoup解析獲取到的頁面內容soup = BeautifulSoup(response.text, 'html.parser')# 查找頁面中所有的電影條目movies = soup.find_all('div', class_='item')# 遍歷每部電影條目for movie in movies:# 提取電影標題title = movie.find('span', class_='title').text# 提取電影評分rating = movie.find('span', class_='rating_num').text# 提取電影的詳細信息,這里只取第一行info = movie.find('div', class_='bd').find('p').text.strip().split('\n')[0]# 提取主演信息,可能有多個主演,通過分割和篩選獲取actors = [actor.strip() for actor in info.split('/') if actor.strip().startswith('主演')]# 如果有主演信息,去除'主演:'并用逗號連接,否則顯示'N/A'actors = ', '.join(actors).replace('主演:', '') if actors else 'N/A'# 打印電影的標題、評分和主演信息print(f"Title: {title}")print(f"Rating: {rating}")print(f"Actors: {actors}\n")# 判斷是否是直接運行此腳本,如果是,則調用fetch_movie_data函數
if __name__ == "__main__":fetch_movie_data()

在這里插入圖片描述

代碼解釋:

這段Python代碼定義了一個函數fetch_movie_data()用于從豆瓣電影Top250頁面抓取電影數據,包括電影標題、評分以及主演信息,并打印這些信息。

下面是代碼的詳細解釋:

  1. 導入必要的庫

    • requests:用于發送HTTP請求。
    • BeautifulSoup:用于解析HTML文檔。
  2. 定義fetch_movie_data函數

    • 設置目標URL為豆瓣電影Top250頁面。
    • 設置請求頭headers,其中包含一個模擬瀏覽器的User-Agent字符串,這是為了繞過網站可能的反爬蟲機制。
  3. 發送GET請求并解析HTML

    • 使用requests.get方法發送GET請求到指定URL,獲取響應文本。
    • 使用BeautifulSoup解析響應文本,創建一個soup對象,這個對象可以用來解析和提取HTML元素。
  4. 提取電影信息

    • 使用soup.find_all找到所有的電影條目,每個電影條目是一個div標簽,類名為item
    • 對于每部電影,使用find方法來查找特定的信息:
      • 電影名稱:查找類名titlespan標簽。
      • 評分:查找類名rating_numspan標簽。
      • 信息:查找div標簽下的p標簽,此標簽通常包含電影的年份、國家、類型及演員等信息。
    • info中提取主演信息,通過查找以“主演”開始的字符串,然后去除“主演:”,并將所有主演名字用逗號連接起來。
  5. 打印電影信息

    • 打印電影標題、評分和主演信息。
  6. 執行函數

    • __main__模塊下調用fetch_movie_data函數,執行抓取和打印操作。

注意事項

  1. 遵守網站規則:在實際操作中,請確保你的行為符合目標網站的robots.txt文件規定,不要對服務器造成過大負擔。
  2. 動態加載內容:有些網站使用JavaScript動態加載內容,這可能需要使用如Selenium這樣的工具來模擬瀏覽器行為。
  3. 錯誤處理:在實際應用中,應加入更完善的錯誤處理機制,比如重試策略、超時設置等。

漠漠水田飛白鷺,陰陰夏木囀黃鸝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/36996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/36996.shtml
英文地址,請注明出處:http://en.pswp.cn/web/36996.shtml

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

相關文章

AI大模型技術在音樂創造的應用前景

大模型技術在音樂創作領域具有廣闊的應用前景,可以為音樂家、作曲家和音樂愛好者提供以下方面的幫助。北京木奇移動技術有限公司,專業的軟件外包開發公司,歡迎交流合作。 音樂創作輔助:大模型可以幫助音樂家和作曲家生成旋律、和聲…

Win腳本開機自啟ALIst和RClone

轉自個人博客:https://www.jjy2023.cn/2024/05/23/win%e8%84%9a%e6%9c%ac%e5%bc%80%e6%9c%ba%e8%87%aa%e5%90%afalist%e5%92%8crclone/ 在配置完alist和rclone之后,就只需要每次開機啟動兩者就行了,所以感覺使用AListHelper沒有必要&#xff…

算法金 | 協方差、方差、標準差、協方差矩陣

大俠幸會,在下全網同名「算法金」 0 基礎轉 AI 上岸,多個算法賽 Top 「日更萬日,讓更多人享受智能樂趣」 抱個拳,送個禮 1. 方差 方差是統計學中用來度量一組數據分散程度的重要指標。它反映了數據點與其均值之間的偏離程度。在…

Flask無法Debug

問題描述 Flask Debug的時候,可能會無法進入斷點。我使用的是pycharm CE版本。 解決方案 確保pycharm安裝路徑不帶空格。(帶空格路徑導致debug程序啟動報錯)Gevent compatible,這個東西老的pycharm版本必須勾選它,新…

中霖教育靠譜嗎?在職備考一建好通過嗎?

中霖教育靠譜嗎?在職備考一建好通過嗎? 課程設置:報名后會進行測評,了解學員的知識掌握情況、時間安排和記憶思維特點等,制定更適合的學習計劃。 課程以考試通過為目標,去繁化簡,只講有用的干貨,幫助快…

Python的GIL

Python的GIL是什么?它對多線程編程有什么影響? GIL(全局解釋器鎖)是Python解釋器中的一個機制,它是為了保證在任何時刻只有一個線程執行Python字節碼。GIL的存在主要因為Python的內存管理和垃圾回收機制是線程不安全的…

使用Vite工具創建項目,并使用Vue Router步驟

步驟 1: 安裝 Vite 首先,確保你的電腦上已經安裝了Node.js和npm。然后,通過以下命令全局安裝Vite(如果已經安裝,請跳過此步驟): npm install -g create-vite步驟 2: 創建新的Vue項目 使用Vite創建一個新…

Python 學習之標準庫(二)

Python標準庫是指Python編程語言自帶的一組模塊和包,它們是Python語言的核心組成部分,為開發者提供了豐富的功能和工具,幫助快速實現各種功能需求。以下是對Python標準庫的一些主要內容和模塊的歸納: 1. 數學計算: a.…

Python驅動的智能客服系統構建實錄

Python驅動的智能客服系統構建實錄 作為技術領域的老將,今天我打算帶大家深挖一個熱門應用——智能客服系統,并且如何通過Python這門萬能鑰匙,結合前沿的深度學習技術,賦予其更為人性化、高效的溝通能力。同時,我們不…

VLOOKUP函數在表格的簡單運用-兩個表匹配

1.什么是VLOOKUP? VLOOKUP是Excel中的一個內置函數,主要用于在區域或表格的首列查找指定的值,并返回該行中其他列的值。它特別適用于跨表格數據匹配 2.函數運用 2.1.這邊兩個表取名a表和b表,做為我們的實例表。 表格a包含&…

第二十一站:Java的多彩之旅終結篇

異步編程與反應式系統:應對高并發挑戰 隨著互聯網應用對響應速度和并發處理能力要求的提高,Java生態系統也與時俱進,引入了異步編程模型和反應式編程框架,以應對現代應用的挑戰。 異步編程 Java 8引入了CompletableFuture&…

JavaScript高級程序設計(第四版)--學習記錄之迭代器與生成器(上)

什么是迭代? 迭代的意思是按照順序反復多次執行一段程序。循環是迭代機制的基礎,因為它可以指定迭代的次數,以及每次迭代要執行的操作。 迭代器模式 迭代器模式描述了一個方案,可以把有些結構稱為“可迭代對象” ,這些…

基于 DJYOS 的 HMI 場景研究:探索智能生活的無限可能

引言: 在當今數字化時代,人機界面(HMI)技術的發展正深刻改變著我們的生活方式。DJYOS 作為一款先進的操作系統,為 HMI 產品的開發提供了強大的支持。本文將深入探討基于 DJYOS 的 HMI 場景,展示其在智能家…

通過rediss實現用戶菜單智能推薦

本人用的框架 SpringCloud redisOauth2Security 前言: 整體使用過濾器的思想,獲取Request,然后從數據庫查到菜單名稱和路由以及計算點擊次數,最后以list的形式存在redis,設計定時任務,在一定時間后&#x…

Search for documents with similar texts

題意:搜索具有相似文本的文檔 問題背景: I have a document with three attributes: tags, location, and text. 我有一份文檔,包含三個屬性:標簽、位置和文本。 Currently, I am indexing all of them using LangChain/pgvecto…

快速了解《大模型賦能下的AI2.0數字人平臺》白皮書

在生成式AI和大模型的賦能下,數字人迎來AI 2.0時代。它能否成為每個人的“數字分身”,轉化為新型的AI勞動力工具?商湯科技與上海市人工智能技術協會、零壹智庫、增強現實核心技術產業聯盟聯合發布《大模型賦能下的AI 2.0數字人平臺》。《白皮…

Kubernetes面試整理-PersistentVolumes和PersistentVolumeClaims的使用和配置

在 Kubernetes 中,PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC) 提供了一種分離存儲和使用存儲的機制。PV 是集群中存儲資源的抽象表示,而 PVC 是用戶對存儲資源的請求。通過這種機制,用戶可以動態地申請和管理存儲資源。 PersistentVolumes (PV) PersistentVol…

【D3.js in Action 3 精譯】1.2.2 可縮放矢量圖形(二)

當前內容所在位置 第一部分 D3.js 基礎知識 第一章 D3.js 簡介 1.1 何為 D3.js?1.2 D3 生態系統——入門須知 1.2.1 HTML 與 DOM1.2.2 SVG - 可縮放矢量圖形 ?? 第一部分【第二部分】??第三部分(精譯中 ?) 1.2.3 Canvas 與 WebGL&#x…

自動化任務:在IPython中創建和運行腳本

在數據科學和編程中,自動化任務是提高效率的關鍵。IPython提供了多種方法來創建和運行腳本,使得重復性任務可以被輕松自動化。本文將介紹如何在IPython中創建和運行腳本,幫助你更高效地完成工作。 1. 創建和保存IPython腳本 使用文本編輯器…

Spring Boot 中的微服務監控與管理

微服務的概述 微服務架構的優點和挑戰 優點: 靈活性和可擴展性:微服務架構允許每個服務單獨部署和擴展,這使得系統可以更靈活地適應不同的業務需求和負載變化。 使團隊更加聚焦:每個微服務都有明確的職責,這使得開發團隊可以更加聚焦,專注于開發他們的服務。 技術和框…