python使用代理IP爬取貓眼電影專業(yè)評分?jǐn)?shù)據(jù)
前言
我們?yōu)槭裁葱枰褂肐P代理服務(wù)?
在編寫爬蟲程序的過程中,IP封鎖無疑是一個常見且棘手的問題。盡管網(wǎng)絡(luò)上存在大量的免費IP代理網(wǎng)站,但其質(zhì)量往往參差不齊,令人堪憂。許多代理IP的延遲過高,嚴(yán)重影響了爬蟲的工作效率;更糟糕的是,其中不乏大量已經(jīng)失效的代理IP,使用這些IP不僅無法繞過封鎖,反而可能使爬蟲陷入更深的困境。
本篇文章中介紹一下如何使用Python的Requests庫和BeautifulSoup庫來抓取貓眼電影網(wǎng)站上的專業(yè)評分?jǐn)?shù)據(jù)。
正文
1、導(dǎo)包
import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt
Requests庫是一個簡單易用的HTTP庫,用于發(fā)送網(wǎng)絡(luò)請求和獲取響應(yīng)數(shù)據(jù)。BeautifulSoup庫則是一個用于解析HTML和XML文檔的Python庫,可以幫助我們從網(wǎng)頁中提取所需的數(shù)據(jù)。
2、設(shè)置代理
設(shè)置代理和代理信息可以在這里獲取:IP代理服務(wù)
# 設(shè)置代理信息 proxyHost = "www.16yun.cn" proxyPort = "5445" proxyUser = "your_proxy_user" proxyPass = "your_proxy_password" # 設(shè)置代理 proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host": proxyHost, "port": proxyPort, "user": proxyUser, "pass": proxyPass, } proxies = { "http": proxyMeta, "https": proxyMeta, }
3、設(shè)置請求頭
請求頭的獲取方式可以參考這篇文章:python使用請求頭部headers處理403錯誤_python_腳本之家 (jb51.net)
當(dāng)然不用自己的也行哈哈
# 設(shè)置請求頭,模擬瀏覽器訪問 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' }
4、發(fā)起請求
# 發(fā)起請求,獲取網(wǎng)頁內(nèi)容 url = 'https://maoyan.com/films?showType=3' response = requests.get(url, headers=headers, proxies=proxies) # 添加proxies參數(shù) soup = BeautifulSoup(response.text, 'html.parser')
5、解析網(wǎng)頁內(nèi)容
# 解析網(wǎng)頁內(nèi)容,提取專業(yè)評分?jǐn)?shù)據(jù) movie_names = [] professional_scores = [] for movie in soup.find_all('div', attrs={'class': 'movie-item film-channel'}): movie_name = movie.find('span', attrs={'class': 'name'}).text score = movie.find('span', attrs={'class': 'integer'}).text + movie.find('span', attrs={'class': 'fraction'}).text movie_names.append(movie_name) professional_scores.append(score) # 將數(shù)據(jù)存儲到DataFrame中 data = {'電影名稱': movie_names, '專業(yè)評分': professional_scores} df = pd.DataFrame(data)
6、數(shù)據(jù)可視化
# 數(shù)據(jù)可視化 plt.figure(figsize=(10, 6)) plt.bar(df['電影名稱'], df['專業(yè)評分'], color='skyblue') plt.title('貓眼電影專業(yè)評分排行榜') plt.xlabel('電影名稱') plt.ylabel('專業(yè)評分') plt.xticks(rotation=45) plt.show()
上述代碼片段展示了如何運用Python中的Requests庫與BeautifulSoup庫,精準(zhǔn)地抓取貓眼電影網(wǎng)站上的專業(yè)評分?jǐn)?shù)據(jù)。隨后,通過Pandas庫對數(shù)據(jù)進(jìn)行整理與分析,再借助Matplotlib庫進(jìn)行可視化呈現(xiàn)。這一數(shù)據(jù)采集、處理與可視化的完整流程。
完整代碼如下:
# 導(dǎo)入所需的庫 import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt # 設(shè)置代理信息 proxyHost = "www.16yun.cn" proxyPort = "5445" proxyUser = "your_proxy_user" proxyPass = "your_proxy_password" # 設(shè)置代理 proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host": proxyHost, "port": proxyPort, "user": proxyUser, "pass": proxyPass, } proxies = { "http": proxyMeta, "https": proxyMeta, } # 設(shè)置請求頭,模擬瀏覽器訪問 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' } # 發(fā)起請求,獲取網(wǎng)頁內(nèi)容 url = 'https://maoyan.com/films?showType=3' response = requests.get(url, headers=headers, proxies=proxies) # 添加proxies參數(shù) soup = BeautifulSoup(response.text, 'html.parser') # 解析網(wǎng)頁內(nèi)容,提取專業(yè)評分?jǐn)?shù)據(jù) movie_names = [] professional_scores = [] for movie in soup.find_all('div', attrs={'class': 'movie-item film-channel'}): movie_name = movie.find('span', attrs={'class': 'name'}).text score = movie.find('span', attrs={'class': 'integer'}).text + movie.find('span', attrs={'class': 'fraction'}).text movie_names.append(movie_name) professional_scores.append(score) # 將數(shù)據(jù)存儲到DataFrame中 data = {'電影名稱': movie_names, '專業(yè)評分': professional_scores} df = pd.DataFrame(data) # 數(shù)據(jù)可視化 plt.figure(figsize=(10, 6)) plt.bar(df['電影名稱'], df['專業(yè)評分'], color='skyblue') plt.title('貓眼電影專業(yè)評分排行榜') plt.xlabel('電影名稱') plt.ylabel('專業(yè)評分') plt.xticks(rotation=45) plt.show()
當(dāng)然,如果你自己要使用的話得用自己專屬的IP代理信息,而且具體情況得具體分析。如果你買了代理IP的話,不會的直接問客服,直接給你服務(wù)的服服帖帖的。
小結(jié)
本文詳細(xì)闡述了如何利用Python爬蟲技術(shù)從貓眼電影網(wǎng)站獲取專業(yè)評分?jǐn)?shù)據(jù)的過程,并通過代碼實例展示了從設(shè)置代理、發(fā)起請求、解析網(wǎng)頁內(nèi)容到數(shù)據(jù)提取與可視化的完整流程。
首先,文章介紹了必要的庫導(dǎo)入,包括requests用于發(fā)起網(wǎng)絡(luò)請求,BeautifulSoup用于解析HTML頁面,pandas用于數(shù)據(jù)處理,以及matplotlib用于數(shù)據(jù)可視化。接著,通過設(shè)置代理和請求頭,模擬了瀏覽器訪問,成功繞過了可能存在的反爬蟲機(jī)制,獲取了目標(biāo)網(wǎng)頁的內(nèi)容。
在解析網(wǎng)頁內(nèi)容方面,文章通過BeautifulSoup的find_all方法定位到包含電影信息的div元素,并提取了電影名稱和專業(yè)評分?jǐn)?shù)據(jù)。這些數(shù)據(jù)被存儲在一個列表中,為后續(xù)的數(shù)據(jù)處理和分析提供了基礎(chǔ)。
為了更直觀地展示數(shù)據(jù),文章還利用pandas庫將提取的數(shù)據(jù)轉(zhuǎn)換成了DataFrame格式,并使用matplotlib庫繪制了專業(yè)評分排行榜的條形圖。這不僅有助于讀者更好地理解數(shù)據(jù)分布情況,還能為后續(xù)的深入分析提供直觀的參考。
以上就是python使用代理IP爬取貓眼電影專業(yè)評分?jǐn)?shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于python代理IP爬取貓眼數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python使用opencv在Windows下調(diào)用攝像頭實現(xiàn)解析
這篇文章主要介紹了python使用opencv在Windows下調(diào)用攝像頭實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Flask框架 CSRF 保護(hù)實現(xiàn)方法詳解
這篇文章主要介紹了Flask框架 CSRF 保護(hù)實現(xiàn)方法,結(jié)合實例形式詳細(xì)分析了Flask-WTF針對CSRF攻擊的防護(hù)相關(guān)操作技巧,需要的朋友可以參考下2019-10-10解決Python?出現(xiàn)File?“<stdin>“,?line?1非語法錯誤的問題
這篇文章主要介紹了Python?出現(xiàn)File?“<stdin>“,?line?1非語法錯誤的解決辦法,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03基于Python編寫一個監(jiān)控CPU的應(yīng)用系統(tǒng)
在使用電腦辦公時,有時候不知道哪些軟件或進(jìn)程會占用大量的資源,導(dǎo)致進(jìn)行其他任務(wù)時出現(xiàn)變慢、卡頓等現(xiàn)象。因此,實時監(jiān)控系統(tǒng)的資源就變得非常重要。本文用Python編寫了一款超治愈的RunCat監(jiān)控應(yīng)用系統(tǒng),需要的可以參考一下2022-06-06django rest framework 實現(xiàn)用戶登錄認(rèn)證詳解
這篇文章主要介紹了django rest framework 實現(xiàn)用戶登錄認(rèn)證詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07