爬取豆瓣電影Top250和資料分析
import requests
from bs4 import BeautifulSoup
from pandas import DataFrame
'''
最後成功提取了
' 電影排名 ',' 電影名 ',' 上映時間 ',' 導演 ',' 主演 ',' 電影型別 ',' 電影評分 ',' 評價人數 ',' 電影連結 '
最後將結果輸出到了 豆瓣電影 Top250.xlsx
但是還存在問題:就是提取語言和製片國家 / 地區時,出現沒有 selector 的情況。
要解決該問題可能需要 xpath
'''
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55'}
start_num = [i for i in range(0,226,25)]
list_url_mv = [] # 所有電影的 URL
for start in start_num:
url = '{}&filter='.format(start)
print(' 正在處理 url : ',url)
response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
url_mv_list = soup.select('#content > div > div.article > ol > li > div > div.info > div.hd > a')
# print(url_mv_list)
for index_url in range(len(url_mv_list)):
url_mv = url_mv_list[index_url]['href']
list_url_mv.append(url_mv)
# print(url_mv)
# 對每部電影進行處理
def loading_mv(url,number):
list_mv = []
print('----- 正在處理第 {} 部電影 -----'.format(number+1))
list_mv.append(number+1) # 排名
# 解析網頁
response_mv = requests.get(url=url,headers=headers)
soup_mv =外匯跟單gendan5.com BeautifulSoup(response_mv.text,'html.parser')
# 爬取電影名
mv_name = soup_mv.find_all('span',attrs={'property':'v:itemreviewed'}) # 電影名
mv_name = mv_name[0].get_text()
list_mv.append(mv_name)
# print(mv_name)
# 爬取電影的上映時間
mv_year = soup_mv.select('span.year') # 電影上映時間
mv_year = mv_year[0].get_text()[1:5]
list_mv.append(mv_year)
# print(mv_year)
# 爬取導演資訊
list_mv_director = [] # 導演
mv_director = soup_mv.find_all('a',attrs={'rel':"v:directedBy"})
for director in mv_director:
list_mv_director.append(director.get_text())
string_director = '/'.join(list_mv_director) # 重新定義格式
list_mv.append(string_director)
# print(list_mv_director)
# 爬取主演資訊
list_mv_star = [] # 主演
mv_star = soup_mv.find_all('span',attrs={'class':'actor'})
if mv_star == []: # 在第 210 部時沒有主演
list_mv.append(None)
else :
mv_star = mv_star[0].get_text().strip().split('/')
mv_first_star = mv_star[0].split(':')
list_mv_star.append(mv_first_star[-1].strip())
del mv_star[0] # 去除 ' 主演 ' 欄位
for star in mv_star:
list_mv_star.append(star.strip())
string = '/'.join(list_mv_star) # 重新定義格式
list_mv.append(string)
# 爬取電影型別
list_mv_type = [] # 電影型別
mv_type = soup_mv.find_all('span',attrs={'property':'v:genre'})
for type in mv_type:
list_mv_type.append(type.get_text())
string_type = '/'.join(list_mv_type)
list_mv.append(string_type)
# print(list_mv_type)
# 爬取電影評分
mv_score = soup_mv.select('strong.ll.rating_num') # 評分
mv_score = mv_score[0].get_text()
list_mv.append(mv_score)
# 爬取評價人數
mv_evaluation_num = soup_mv.select('a.rating_people') # 評價人數
mv_evaluation_num = mv_evaluation_num[0].get_text().strip()
list_mv.append(mv_evaluation_num)
# 爬取劇情簡介
mv_plot = soup_mv.find_all('span',attrs={"class":"all hidden"}) # 劇情簡介
if mv_plot == []:
list_mv.append(None)
else:
string_plot = mv_plot[0].get_text().strip().split()
new_string_plot = ' '.join(string_plot)
list_mv.append(new_string_plot)
# 加入電影網址
list_mv.append(url)
return list_mv
# url1 = '
# url2 = ' # 210 部
# a = loading_mv(url1,1)
# # b = loading_mv(url2,210)
# # list_all_mv.append(a)
# # list_all_mv.append(b)
list_all_mv = []
dict_mv_info = {}
for number in range(len(list_url_mv)):
mv_info = loading_mv(list_url_mv[number],number)
list_all_mv.append(mv_info)
print('----- 執行結束 -----')
pd = DataFrame(list_all_mv,columns=[' 電影排名 ',' 電影名 ',' 上映時間 ',' 導演 ',' 主演 ',' 電影型別 ',' 電影評分 ',' 評價人數 ',' 電影簡介 ',' 電影連結 '])
# print(pd)
pd.to_excel(r'C:\Users\86178\Desktop\ 豆瓣電影 Top250.xlsx')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2901599/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python爬取分析豆瓣電影Top250Python
- scrapy入門:豆瓣電影top250爬取
- 使用python爬取豆瓣電影TOP250Python
- 豆瓣top250資料爬取
- scrapy爬取豆瓣電影資料
- 正規表示式_爬取豆瓣電影排行Top250
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- 資料視覺化豆瓣電影 TOP250視覺化
- 豆瓣電影TOP250爬蟲及視覺化分析筆記爬蟲視覺化筆記
- python更換代理爬取豆瓣電影資料Python
- 全棧 - 9 實戰 爬取豆瓣電影資料全棧
- python——豆瓣top250爬取Python
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 豆瓣電影資料分析和視覺化視覺化
- Python:獲取豆瓣電影TOP250列表Python
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- Python爬取豆瓣電影的短評資料並進行詞雲分析處理Python
- nodejs 30行程式碼 爬豆瓣電影資料NodeJS行程
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- Node.js爬取豆瓣資料Node.js
- python爬蟲知識點三--解析豆瓣top250資料Python爬蟲
- Python 爬蟲實戰(1):分析豆瓣中最新電影的影評Python爬蟲
- 爬蟲如何爬取貓眼電影TOP榜資料爬蟲
- 專案之爬蟲入門(豆瓣TOP250)爬蟲
- 豆瓣:2013年瘋狂電影大資料之聊電影大資料
- 豆瓣:2013年瘋狂電影大資料之看電影大資料
- scrapy 爬電影 抓取資料
- 教你用python登陸豆瓣並爬取影評Python
- Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題Python爬蟲
- Python爬取電影天堂Python
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- 擼個爬蟲,爬取電影種子爬蟲
- 從豆瓣電影批量獲取看過這部電影的使用者列表