Python:獲取豆瓣電影TOP250列表
完成這些操作主要用到了 BeautifulSoup 和 requests 這兩個庫,使用之前要提前安裝好相應的庫。
參考:
Quickstart — Requests 2.18.3 documentation
Beautiful Soup 4.4.0 文件 — beautifulsoup 4.4.0 文件
程式碼如下:
#!/usr/bin/python3
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests,re
#列表第一頁的開始地址
ROOT_URL = 'https://movie.douban.com/top250'
def download_html(url):
# 偽裝成瀏覽器
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0'}
return requests.get(url,headers=headers).content
def parse_html(html):
soup = BeautifulSoup(html,'lxml') #建立 BeautifulSoup 物件
movie_list = soup.find('ol',attrs={'class':'grid_view'}) # 定位到每一頁的電影列表
result = []
for val in movie_list.find_all('li'):
rank = val.find('em').getText() #每部電影的排名
rating = val.find('span',attrs={'class':'rating_num'}).getText() #評分
#電影介紹,有幾部電影是沒有簡介的(例如《小森林 夏秋篇》),這需要注意
description = val.find('p',attrs={'class':'quote'})
if description:
description = description.find('span').getText()
info = val.find('a') # 提供給以下三行用
url = info['href'] # 電影在豆瓣上的連結
name = info.find('img')['alt'] #電影名
cover = info.find('img')['src'] #電影的封面圖片地址
add = {}
add['rank'] = rank
add['rating'] = rating
add['name'] = name
add['cover'] = cover
add['url'] = url
if description:
add['description'] = description
result.append(add)
return result
if __name__ == '__main__':
result = []
with open('result.md','w') as file: #用 markdown 形式儲存最終結果
for start in range(0,250,25):
#網址有https://movie.douban.com/top250?start=n&filter= 的規律
# n 從 0 到 225,每次遞增 25
url = ROOT_URL + "?start=" + str(start)
# 輸出地址,好知道到了那一頁
print(url)
html_data = download_html(url)
for val in parse_html(html_data):
# 接下來一行是顯示電影封面圖片,顯示效果不好暫時註釋掉
#file.write('![](' + val['cover'] + ')\n')
file.write(val['rank']+'. [**'+val['name']+'**]('+val['url']+') ( '+val['rating']+' )\n')
if 'description' in val:
file.write(val['description']+'\n')
最終結果(資訊量有點大,暫時只貼上前 20 個結果)
-
肖申克的救贖 ( 9.6 )
希望讓人自由。 -
霸王別姬 ( 9.5 )
風華絕代。 -
這個殺手不太冷 ( 9.4 )
怪蜀黍和小蘿莉不得不說的故事。 -
阿甘正傳 ( 9.4 )
一部美國近現代史。 -
美麗人生 ( 9.5 )
最美的謊言。 -
千與千尋 ( 9.2 )
最好的宮崎駿,最好的久石讓。 -
辛德勒的名單 ( 9.4 )
拯救一個人,就是拯救整個世界。 -
泰坦尼克號 ( 9.2 )
失去的才是永恆的。 -
盜夢空間 ( 9.2 )
諾蘭給了我們一場無法盜取的夢。 -
機器人總動員 ( 9.3 )
小瓦力,大人生。 -
海上鋼琴師 ( 9.2 )
每個人都要走一條自己堅定了的路,就算是粉身碎骨。 -
三傻大鬧寶萊塢 ( 9.1 )
英俊版憨豆,高情商版謝耳朵。 -
忠犬八公的故事 ( 9.2 )
永遠都不能忘記你所愛的人。 -
放牛班的春天 ( 9.2 )
天籟一般的童聲,是最接近上帝的存在。 -
大話西遊之大聖娶親 ( 9.2 )
一生所愛。 -
教父 ( 9.2 )
千萬不要記恨你的對手,這樣會讓你失去理智。 -
龍貓 ( 9.1 )
人人心中都有個龍貓,童年就永遠不會消失。 -
楚門的世界 ( 9.0 )
如果再也不能見到你,祝你早安,午安,晚安。 -
亂世佳人 ( 9.2 )
Tomorrow is another day. -
天堂電影院 ( 9.1 )
那些吻戲,那些青春,都在影院的黑暗裡被淚水沖刷得無比清晰。
最後我個人不是很想把它稱為爬蟲,在我看來這更多的是一種批量話的自動操作,能免去很多麻煩,所以沒有在標題中提及爬蟲這個詞。
歡迎評論或者點選喜歡~
來自個人 Python 文集
相關文章
- 使用python爬取豆瓣電影TOP250Python
- Python爬取分析豆瓣電影Top250Python
- scrapy入門:豆瓣電影top250爬取
- 爬取豆瓣電影Top250和資料分析
- 正規表示式_爬取豆瓣電影排行Top250
- 從豆瓣電影批量獲取看過這部電影的使用者列表
- python——豆瓣top250爬取Python
- [python爬蟲] BeautifulSoup和Selenium對比爬取豆瓣Top250電影資訊Python爬蟲
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- 資料視覺化豆瓣電影 TOP250視覺化
- 豆瓣top250資料爬取
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- python更換代理爬取豆瓣電影資料Python
- 豆瓣電影TOP250爬蟲及視覺化分析筆記爬蟲視覺化筆記
- scrapy爬取豆瓣電影資料
- Flutter(十二)之練習高仿豆瓣電影列表Flutter
- 豆瓣top250(go版以及python版)GoPython
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- Python爬蟲筆記(4):利用scrapy爬取豆瓣電影250Python爬蟲筆記
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- python爬蟲 爬取豆瓣電影 1-10 ajax 資料Python爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- 全棧 - 9 實戰 爬取豆瓣電影資料全棧
- IMDB TOP250電影介紹(下)
- IMDB TOP250電影介紹(上)
- 批量抓取豆瓣電影圖片
- Python 爬蟲實戰(1):分析豆瓣中最新電影的影評Python爬蟲
- 教你用python登陸豆瓣並爬取影評Python
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- 豆瓣電影外掛使用幫助
- Python爬取豆瓣電影的短評資料並進行詞雲分析處理Python
- Python爬取電影天堂Python
- python爬蟲知識點三--解析豆瓣top250資料Python爬蟲
- React實現的超高仿豆瓣電影React
- 【Python】從0開始寫爬蟲——轉身扒豆瓣電影Python爬蟲
- Python爬蟲入門 | 7 分類爬取豆瓣電影,解決動態載入問題Python爬蟲
- 豆瓣:2013年瘋狂電影大資料之聊電影大資料