熱播地址:https://movie.douban.com/cinema/nowplaying/beijing/
1、使用瀏覽器查看html文件
找到熱播電影的標籤文件
查看tag,可以看到最開始的tag爲li
2、HTMLPaser
主要用來解析HTTP數據,其中有幾個接口
- feed: 向解析器喂數據,可以分段提供
- handler_starttag: 處理html的開始標籤
- .tag:標籤名稱
- .attrs:屬性列表
- handler_data:處理標籤裏的數據體
- Data:數據文本
3、代碼分析
環境:Python 2.7,win10
# -*- coding: utf-8 -*-
import urllib2
from HTMLParser import HTMLParser
class MovieParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self) # 調用父類的構造函數
self.movies = [] # 定義一個數組來儲解析出來的電影
def handle_starttag(self, tag, attrs): # 重載handle_starttag方法,這個方法就可以去解析li這個數據
def _attr(attrlist, attrname): # 定義一個函數來解析這個屬性
for attr in attrlist: # 從屬性列表裏面取出對應列表的值
if attr[0] == attrname: # 如果這個傳進來的屬性名稱和這個要求的名稱一樣
return attr[1] # 返回屬性值
return None
# 如果要爬取即將上映的電影時,data-category爲upcoming
if tag == 'li' and _attr(attrs, 'data-title') and _attr(attrs, 'data-category') == 'nowplaying':
movie = {}
movie['title'] = _attr(attrs, 'data-title') # 電影名稱
movie['score'] = _attr(attrs, 'data-score') # 電影分數
movie['director'] = _attr(attrs, 'data-director') # 電影導演
movie['actors'] = _attr(attrs, 'data-actors') # 電影演員
self.movies.append(movie) # 提取出來後放到列表裏面
print('%(title)s|%(score)s|%(director)s|%(actors)s' % movie)
def nowplaying_movie(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36'} # 模擬一個瀏覽器的行爲
req = urllib2.Request(url, headers=headers)
s = urllib2.urlopen(req)
paser = MovieParser()
paser.feed(s.read())
s.close()
return paser.movies
url = 'https://movie.douban.com/cinema/nowplaying/beijing/'
movies = nowplaying_movie(url)
運行結果
嫌疑人X的獻身|6.6|蘇有朋|王凱 / 張魯一 / 林心如
金剛:骷髏島|6.9|喬丹·沃格特-羅伯茨|湯姆·希德勒斯頓 / 布麗·拉爾森 / 塞繆爾·傑克遜
非凡任務|6.6|麥兆輝 潘耀明|黃軒 / 段奕宏 / 郎月婷
綁架者|5.3|徐靜蕾|白百何 / 黃立行 / 明道
冰雪大作戰|6.2|讓-弗朗索瓦·波略特 弗蘭克·布里森|安吉拉·嘉魯皮 / 瑪麗歐·沃爾夫 / 露辛達·戴維斯
美女與野獸|7.4|比爾·康頓|艾瑪·沃森 / 丹·史蒂文斯 / 盧克·伊萬斯
有完沒完|5.7|王嘯坤|範偉 / 賈靜雯 / 劉俊昊
一條狗的使命|7.7|拉斯·霍爾斯道姆|布麗特·羅伯森 / 丹尼斯·奎德 / 佩吉·利普頓
八月|7.3|張大磊|孔維一 / 張晨 / 郭燕芸
歡樂喜劇人|2.6|黎繼強|郭德綱 / 岳雲鵬 / 羅溫·艾金森
怨靈宿舍之白紙女生|0|陸詩雷|謝容兒 / 薇拉貝兒 / 姚雨鑫
歡樂好聲音|8.2|加斯·詹寧斯 克里斯托夫·盧爾德萊|馬修·麥康納 / 瑞茜·威瑟斯彭 / 塞思·麥克法蘭
金剛狼3:殊死一戰|8.3|詹姆斯·曼高德|休·傑克曼 / 帕特里克·斯圖爾特 / 達芙妮·基恩
愛樂之城|8.4|達米恩·查澤雷|瑞恩·高斯林 / 艾瑪·斯通 / 約翰·傳奇
麥兜響噹噹|7.4|謝立文|黃渤 / 黃秋生 / 吳君如
極限特工3:終極迴歸|5.8|D·J·卡盧索|範·迪塞爾 / 甄子丹 / 迪皮卡·帕度柯妮
領袖1935|2.5|周琦 馬德林|王暉 / 劉勁 / 吳京安
碟仙詭譚2|3.2|雷宇揚|張韶涵 / 方力申 / 惠英紅
喚愛|0|王焮|楊欣 / 張博翔 / 李松珂
夜色撩人|5.0|夏鋼|王千源 / 余男 / 南宮珉
霸王別姬|9.5|陳凱歌|張國榮 / 張豐毅 / 鞏俐
樂高蝙蝠俠大電影|8.1|克里斯·麥凱|威爾·阿奈特 / 羅莎里奧·道森 / 拉爾夫·費因斯
豬豬俠之英雄豬少年|4.8|陸錦明 鍾裕|易烊千璽 / 陳軼 / 張子琨
點五步|6.4|陳志發|林耀聲 / 鬍子彤 / 廖啓智