Python中的爬蟲實戰:貓眼電影爬蟲

隨著互聯網技術的快速發展,網絡上的信息量越來越龐大。貓眼電影作為國內領先的電影數據平臺,為用戶提供了全面的電影信息服務。本文將介紹如何利用python編寫簡單的貓眼電影爬蟲,獲取電影相關數據。

  1. 爬蟲概述

爬蟲,即網絡爬蟲,是一種自動化獲取互聯網數據的程序。它可以通過網絡上的鏈接,訪問目標網站并獲取數據,實現信息的自動化采集。Python是一種功能強大的編程語言,廣泛應用于數據處理、網絡爬蟲、可視化圖表等方面。

  1. 爬蟲實現

本文的貓眼電影爬蟲將通過Python的requests和BeautifulSoup庫實現。Requests是Python HTTP庫,可以輕松發送網頁請求,而BeautifulSoup是Python的HTML解析庫,可以快速解析HTML頁面。在開始之前,需要安裝這兩個庫。

2.1 導入庫

打開Python編輯器,新建一個Python文件。首先需要導入所需的庫:

1

2

3

import requests

from bs4 import BeautifulSoup

import csv

2.2 創建請求鏈接

接下來創建請求鏈接。打開貓眼電影網站,找到目標電影的鏈接,并將其復制下來。這里以電影《唐人街探案3》為例:

1

url = 'https://maoyan.com/films/1250952'

2.3 發送請求

創建headers,設置請求頭信息,頭信息一般包含User-Agent、Referer、Cookie等信息,模擬實際瀏覽器訪問網頁的請求方式。這里以Chrome瀏覽器為例。然后使用requests庫發送請求,獲取網頁HTML代碼:

1

2

3

4

5

headers = {

????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

}

response = requests.get(url,headers=headers)

html = response.text

2.4 解析HTML代碼

將獲取到的HTML代碼轉化為BeautifulSoup對象,使用BeautifulSoup庫解析HTML代碼,獲取目標數據。由于貓眼電影網站HTML代碼結構比較復雜,需要深入掌握HTML和BeautifulSoup的相關知識。

1

2

3

4

5

6

7

soup = BeautifulSoup(html,'html.parser')

movie_title = soup.find('h1',class_='name').text

movie_info = soup.find_all('div',class_='movie-brief-container')[0]

movie_type = movie_info.find_all('li')[0].text

movie_release_data = movie_info.find_all('li')[2].text

movie_actors = movie_info.find_all('li')[1].text

movie_score = soup.find('span',class_='score-num').text

2.5 保存數據

處理完HTML頁面之后,需要將獲取到的數據保存到本地。這里使用Python的csv庫來存儲數據。csv庫可以將數據轉化為CSV格式,方便后續處理。

1

2

3

4

5

6

7

with open('movie.csv','w',newline='',encoding='utf-8-sig') as csvfile:

????writer = csv.writer(csvfile)

????writer.writerow(['電影名稱',movie_title])

????writer.writerow(['電影類型',movie_type])

????writer.writerow(['上映日期',movie_release_data])

????writer.writerow(['演員陣容',movie_actors])

????writer.writerow(['豆瓣評分',movie_score])

整個代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import requests

from bs4 import BeautifulSoup

import csv

url = 'https://maoyan.com/films/1250952'

headers = {

????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

}

response = requests.get(url,headers=headers)

html = response.text

soup = BeautifulSoup(html,'html.parser')

movie_title = soup.find('h1',class_='name').text

movie_info = soup.find_all('div',class_='movie-brief-container')[0]

movie_type = movie_info.find_all('li')[0].text

movie_release_data = movie_info.find_all('li')[2].text

movie_actors = movie_info.find_all('li')[1].text

movie_score = soup.find('span',class_='score-num').text

with open('movie.csv','w',newline='',encoding='utf-8-sig') as csvfile:

????writer = csv.writer(csvfile)

????writer.writerow(['電影名稱',movie_title])

????writer.writerow(['電影類型',movie_type])

????writer.writerow(['上映日期',movie_release_data])

????writer.writerow(['演員陣容',movie_actors])

????writer.writerow(['豆瓣評分',movie_score])

  1. 總結

本文介紹了如何使用Python的requests和BeautifulSoup庫實現貓眼電影爬蟲。通過發送網絡請求、解析HTML代碼、保存數據等步驟,我們可以輕松地獲取到目標電影相關數據,并將其存儲到本地。網絡爬蟲技術在數據采集、數據挖掘等方面具有廣泛的應用價值,我們可以通過不斷學習提升自己的技術水平,在實踐中不斷探索。

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

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

相關文章

x264 編碼器 common.h 文件中結構體詳細介紹

x264_slice_header_t 定義:typedef struct {x264_sps_t *sps;x264_pps_t *pps;int i_type;int i_first_mb;int i_last_mb;int i_pps_id;int i_frame_num

嵌入式Linux系統編程 — 6.1 信號的基本概念

目錄 1 信號的概念和作用 1.1 什么是信號 1.2 信號的目的 1.3 信號如何處理 2 信號的分類 2.1 可靠信號與不可靠信號 2.2 實時信號與非實時信號 3 常見信號與默認行為 3.1 信號本質上是 int 類型數字編號 3.2 常見信號 1 信號的概念和作用 1.1 什么是信號 信號是一…

艾體寶干貨 | 解析Redis企業版的多租戶技術

在多租戶架構中,一個軟件實例為多個不同的用戶組(或“租戶”)提供服務。每個租戶的數據都被安全地隔離,確保它們對其他租戶不可見且無法訪問。可以將其想象為一棟公寓大樓,每個人都住在共享建筑中獨立且隔離的單元中。…

Java 商城后臺管理系統

### 構建一個健壯的商城后臺管理系統 使用Java Spring Boot框架和MySQL數據庫,逐步構建一個健壯、安全、高效的商城后臺管理系統。本文涵蓋用戶管理、商品管理、訂單管理、分類管理、權限控制、日志記錄、分頁和排序、文件上傳、緩存以及國際化。 --- #### 項目初…

大模型時代的基礎架構,大模型算力中心建設指南重磅來襲!

什么是最暢銷商品?什么是高毛利商品? 我們來看一個例子: 一件T恤使用成本為100元的原料,價格為140元。另一件T恤使用成本為80元的原料,但在樣式、顏色、圖案的設計上比較有特色,價格也為140元。 當這兩件…

【JVM-04】線上CPU100%

【JVM-04】線上CPU100% 1. 如何排查2. 再舉一個例子 1. 如何排查 ?般CPU100%瘋狂GC,都是死循環的鍋,那怎么排查呢?先進服務器,?top -c 命令找出當前進程的運?列表按?下 P 可以按照CPU使?率進?排序顯示Java進程 PID 為 2609…

蘇東坡傳-讀書筆記七

蘇堤和西湖之與杭州,正如美女花容月貌上的雙眸。我常想,倘若西湖之是空空的一片水——沒有蘇堤那秀美的修眉和虹彩般的仙島,一畫龍點睛增其神韻,那西湖該望之如何?幾百年來的中國游客,春季到來之時,向西湖…

throw和catch關鍵字的作用。

在C中,throw和catch是異常處理機制的關鍵字,它們共同工作以處理在程序執行過程中發生的異常情況。 throw 關鍵字 throw關鍵字用于拋出一個異常。當程序遇到無法處理的錯誤時,它會使用throw語句拋出一個異常。這通常是因為遇到了某些無法恢復…

使用Vue 2 + Element UI搭建后臺管理系統框架實戰教程

后臺管理系統作為企業內部的核心業務平臺,其界面的易用性和功能性至關重要。Vue 2作為一個成熟的前端框架,以其輕量級和高效著稱,而Element UI則是一套專為桌面端設計的Vue 2組件庫,它提供了豐富的UI元素和組件,大大簡…

如何在Python中實現一個簡單的爬蟲程序

如何在Python中實現一個簡單的爬蟲程序 隨著互聯網的發展,數據已成為當今社會最寶貴的資源之一。而爬蟲程序則成為了獲取互聯網數據的重要工具之一。本文將介紹如何在Python中實現一個簡單的爬蟲程序,并提供具體的代碼示例。 確定目標網站 在開始編寫爬…

【Python】已解決:urllib.error.HTTPError: HTTP Error 403: Forbidden

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例五、注意事項 已解決:urllib.error.HTTPError: HTTP Error 403: Forbidden 一、分析問題背景 在使用Python的urllib庫中的urlopen或urlretrieve函數下載文件時,有時會遇到…

Android動畫:提升用戶體驗的關鍵技術

Android平臺上的動畫技術不僅僅是界面美化的手段,它更是提升用戶體驗、增強交互性和吸引用戶注意力的重要工具。從簡單的過渡動畫到復雜的視圖動態效果,Android開發者可以利用豐富的動畫API創造出令人印象深刻的應用程序。本文將深入探討Android動畫的多…

Python打字練習

代碼解析 導入模塊和定義單詞列表 import tkinter as tk import randomsample_words ["apple", "banana", "cherry", "date", "fig", "grape", "kiwi", "lemon", "mango", &quo…

LDA主題分析的原理、步驟和實現

當然可以!LDA 主題模型是一種強大的工具,用于從大量文本數據中發現隱藏的主題。讓我們更詳細地介紹它的原理、步驟和實現。 LDA原理 LDA是一種生成模型,它假設: 每個文檔是由若干主題組成的。每個主題是由若干詞匯組成的。 具…

vcpkg國內鏡像源替換

vcpkg國內鏡像源替換 一、從Gitee上下載vcpkg二、全局替換vcpkg/scripts文件下的字符三、回到vcpkg目錄下,執行bootstrap-vcpkg.bat文件,等待執行完畢四、全局替換vcpkg/ports文件下的字符 一、從Gitee上下載vcpkg git clone https://gitee.com/mirrors…

全國30省份各省資本存量數據固定資本形成總額永續盤存法(2000-2023年)

各省資本存量數據通過永續盤存法進行了詳細的計算,這一方法覆蓋了中國30個省份(不包括西藏),提供從2000年起直至2023的資本存量數據集。包括原始數據、測算過程、最終的資本存量結果。 以2000年作為基期年份,依據…

電路筆記(PCB):電流容量(IPC-2221和IPC-2152)+阻抗匹配

電流容量 IPC-2221經驗公式 I K T b A c IK\times T^{b}\times A^{c} IKTbAc 這個公式用于估計PCB(Printed Circuit Board,印刷電路板)導線上的電流(I),其中T和A分別表示溫度(Temperature&a…

flex布局中子元素內容超出時,子元素本身出現滾動條實現方法

flex布局中子元素寬度平均分配,并且當子元素內容超出時,子元素本身出現滾動條實現方法: 將父元素設置為display: flex,以啟用Flexbox布局。將每個子元素的flex屬性設置為1,以使其寬度平均分配。設置子元素的overflow屬…

toRefs 和 toRef

文章目錄 toRefs 和 toReftoRefstoRef toRefs 和 toRef toRefs toRefs 把一個由reactive對象的值變為一個一個ref的響應式的值 import { ref, reactive, toRefs, toRef } from vue; let person reactive({name: 張三,age: 18, }); // toRefs 把一個由reactive對象的值變為一…

ComfyUI流程圖、文生圖、圖生圖步驟教學!

前言 leetcode , 209. 長度最小的子數組 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的子數組 [numsl, numsl1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回 0 …