隨著互聯網技術的快速發展,網絡上的信息量越來越龐大。貓眼電影作為國內領先的電影數據平臺,為用戶提供了全面的電影信息服務。本文將介紹如何利用python編寫簡單的貓眼電影爬蟲,獲取電影相關數據。
- 爬蟲概述
爬蟲,即網絡爬蟲,是一種自動化獲取互聯網數據的程序。它可以通過網絡上的鏈接,訪問目標網站并獲取數據,實現信息的自動化采集。Python是一種功能強大的編程語言,廣泛應用于數據處理、網絡爬蟲、可視化圖表等方面。
- 爬蟲實現
本文的貓眼電影爬蟲將通過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]) |
- 總結
本文介紹了如何使用Python的requests和BeautifulSoup庫實現貓眼電影爬蟲。通過發送網絡請求、解析HTML代碼、保存數據等步驟,我們可以輕松地獲取到目標電影相關數據,并將其存儲到本地。網絡爬蟲技術在數據采集、數據挖掘等方面具有廣泛的應用價值,我們可以通過不斷學習提升自己的技術水平,在實踐中不斷探索。