spider - 貓眼電影top100

一录粱、獲取網(wǎng)頁(yè)

import requests

# 獲取網(wǎng)頁(yè)
def get_page():
    # 請(qǐng)求頭(有些反扒機(jī)制需要檢測(cè))
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
    }

    
    url = 'https://maoyan.com/board/4'
    response = requests.get(url,headers=headers)
    if response.status_code == 200:
        return response.content.decode('utf-8')
    return None

def main():
    html = get_page()
    print(html)

    
if __name__ == '__main__':
    main()

解析網(wǎng)頁(yè)

  • 在main()上面再定義一個(gè)parse_page()
import requests
import re

# 獲取網(wǎng)頁(yè)
def get_page():
    # 請(qǐng)求頭(有些反扒機(jī)制需要檢測(cè))
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
    }

    
    url = 'https://maoyan.com/board/4'
    response = requests.get(url)
    if response.status_code == 200:
        return response.content.decode('utf-8')
    return None

# 解析網(wǎng)頁(yè)
def parse_page(html):
    # 片名
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?alt="(.*?)" class.*?', re.S)
    movie_names = re.findall(pattern, html)
    print('片名:',movie_names)

    # 主演
    pattern = re.compile('<p class="star">(.*?)</p>', re.S)
    actors = re.findall(pattern,html)
    # 去字符串前后空格
    actors = [actor.strip() for actor in actors]
    print('主演:',actors)

    # 上映時(shí)間
    pattern = re.compile('<p class="releasetime">(.*?)</p>', re.S)
    time = re.findall(pattern, html)
    time = [i.strip() for i in time]
    print('上映時(shí)間:',time)

    # 封面圖片
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?data-src="(.*?)" alt.*?', re.S)
    img = re.findall(pattern, html)
    print('封面圖片:',img)

    # 排名
    pattern = re.compile('<i class="board-index board-index-(.*?)">.*?</i>', re.S)
    rank = re.findall(pattern, html)
    print('排名:',rank)

    # 評(píng)分
    pattern = re.compile('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', re.S)
    score = re.findall(pattern, html)
    score = [''.join(i) for i in score]
    print('評(píng)分:', score)


    # 鏈接
    pattern = re.compile('<div class="movie-item-info">.*?<p class="name"><a href="(.*?)" title', re.S)
    detail = re.findall(pattern, html)
    detail = [i.strip() for i in detail]
    print('鏈接:', detail)


def main():
    html = get_page()
#     print(html)
    parse_page(html)

    
if __name__ == '__main__':
    main()

# 打印的內(nèi)容
>>>>
片名: ['霸王別姬', '肖申克的救贖', '羅馬假日', '這個(gè)殺手不太冷', '泰坦尼克號(hào)', '教父', '唐伯虎點(diǎn)秋香', '千與千尋', '魂斷藍(lán)橋', '亂世佳人']
主演: ['主演:張國(guó)榮,張豐毅,鞏俐', '主演:蒂姆·羅賓斯,摩根·弗里曼,鮑勃·岡頓', '主演:格利高里·派克,奧黛麗·赫本,埃迪·艾伯特', '主演:讓·雷諾,加里·奧德曼,娜塔莉·波特曼', '主演:萊昂納多·迪卡普里奧,凱特·溫絲萊特,比利·贊恩', '主演:馬龍·白蘭度,阿爾·帕西諾,詹姆斯·肯恩', '主演:周星馳,鞏俐,鄭佩佩', '主演:柊瑠美,入野自由,夏木真理', '主演:費(fèi)雯·麗,羅伯特·泰勒,露塞爾·沃特森', '主演:費(fèi)雯·麗,克拉克·蓋博,奧利維婭·德哈維蘭']
上映時(shí)間: ['上映時(shí)間:1993-01-01', '上映時(shí)間:1994-10-14(美國(guó))', '上映時(shí)間:1953-09-02(美國(guó))', '上映時(shí)間:1994-09-14(法國(guó))', '上映時(shí)間:1998-04-03', '上映時(shí)間:1972-03-24(美國(guó))', '上映時(shí)間:1993-07-01(中國(guó)香港)', '上映時(shí)間:2001-07-20(日本)', '上映時(shí)間:1940-05-17(美國(guó))', '上映時(shí)間:1939-12-15(美國(guó))']
封面圖片: ['https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/283292171619cdfd5b240c8fd093f1eb255670.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/54617769d96807e4d81804284ffe2a27239007.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/e55ec5d18ccc83ba7db68caae54f165f95924.jpg@160w_220h_1e_1c', 'https://p1.meituan.net/movie/0699ac97c82cf01638aa5023562d6134351277.jpg@160w_220h_1e_1c', 'https://p1.meituan.net/movie/f5a924f362f050881f2b8f82e852747c118515.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/da64660f82b98cdc1b8a3804e69609e041108.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/b076ce63e9860ecf1ee9839badee5228329384.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/46c29a8b8d8424bdda7715e6fd779c66235684.jpg@160w_220h_1e_1c', 'https://p0.meituan.net/movie/230e71d398e0c54730d58dc4bb6e4cca51662.jpg@160w_220h_1e_1c']
排名: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
評(píng)分: ['9.6', '9.5', '9.1', '9.5', '9.6', '9.3', '9.2', '9.3', '9.2', '9.1']
鏈接: ['/films/1203', '/films/1297', '/films/2641', '/films/4055', '/films/267', '/films/1247', '/films/837', '/films/1212', '/films/2760', '/films/7431']

下面附完整代碼(將爬取到的內(nèi)容存到本地)

import json
import re

import requests


# 獲取網(wǎng)頁(yè)
def get_page(page):
    # 請(qǐng)求頭
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
    }

    url = 'https://maoyan.com/board/4?offset='+str(page)
    # url = 'https://maoyan.com/board/4'
    response = requests.get(url)
    if response.status_code == 200:
        return response.content.decode('utf-8')
    return None

# 獲取所有 網(wǎng)頁(yè)
def get_all_pages():
    result = []
    for i in range(10):
        page = i*10
        html = get_page(page)
        result_list = parse_page(html)
        result.append(result_list)

    return result

# 寫入圖片
def save_img(cover_url):
    response = requests.get(cover_url)
    filename = cover_url.split('/')[-1].split('@')[0]

    with open('./images/%s' % filename,'wb')as f:
        f.write(response.content)

# 解析網(wǎng)頁(yè)
def parse_page(html):
    # 片名
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?alt="(.*?)" class.*?', re.S)
    movie_names = re.findall(pattern, html)
    # print('片名:',movie_names)

    # 主演
    pattern = re.compile('<p class="star">(.*?)</p>', re.S)
    actors = re.findall(pattern,html)
    # 去字符串前后空格
    actors = [actor.strip() for actor in actors]
    # print('主演:',actors)

    # 上映時(shí)間
    pattern = re.compile('<p class="releasetime">(.*?)</p>', re.S)
    time = re.findall(pattern, html)
    time = [i.strip() for i in time]
    # print('上映時(shí)間:',time)

    # 封面圖片
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?data-src="(.*?)" alt.*?', re.S)
    img = re.findall(pattern, html)

    # print('封面圖片:',img)

    # 排名
    pattern = re.compile('<i class="board-index board-index-(.*?)">.*?</i>', re.S)
    rank = re.findall(pattern, html)
    # print('排名:',rank)

    # 評(píng)分
    # '<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>'
    pattern = re.compile('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', re.S)
    score = re.findall(pattern, html)
    score = [''.join(i) for i in score]
    # print('評(píng)分:', score)


    # 鏈接
    # '<div class="movie-item-info">.*?<p class="name"><a href="(.*?)" title'
    pattern = re.compile('<div class="movie-item-info">.*?<p class="name"><a href="(.*?)" title', re.S)
    detail = re.findall(pattern, html)
    detail = [i.strip() for i in detail]
    # print('鏈接:', detail)

    print('spider...')

    # 組裝json
    result_list = []

    for i in range(len(movie_names)):
        result_dict = {}
        result_dict['movie_name'] = movie_names[i]
        result_dict['actor'] = actors[i]
        result_dict['time'] = time[i]
        result_dict['img'] = img[i]
        # 保存圖片到本地
        save_img(result_dict['img'])
        result_dict['rank'] = rank[i]
        result_dict['score'] = score[i]
        result_dict['detail'] = detail[i]
        result_list.append(result_dict)

    return result_list


def save_json_file(result):
    json_str = json.dumps(result, ensure_ascii=False)
    with open('maoyan.json','w', encoding='utf-8')as f:
        f.write(json_str)


def main():
    # html = get_page()

    # print(html)
    # parse_page(html)
    result = get_all_pages()
    print(result)
    save_json_file(result)


if __name__ == '__main__':
    main()






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淹朋,一起剝皮案震驚了整個(gè)濱河市偏塞,隨后出現(xiàn)的幾起案子唱蒸,更是在濱河造成了極大的恐慌,老刑警劉巖灸叼,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件神汹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡古今,警方通過(guò)查閱死者的電腦和手機(jī)屁魏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捉腥,“玉大人氓拼,你說(shuō)我怎么就攤上這事。” “怎么了桃漾?”我有些...
    開(kāi)封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵坏匪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我撬统,道長(zhǎng)适滓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任恋追,我火速辦了婚禮凭迹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘几于。我一直安慰自己蕊苗,他們只是感情好沿后,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布沿彭。 她就那樣靜靜地躺著,像睡著了一般尖滚。 火紅的嫁衣襯著肌膚如雪喉刘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天漆弄,我揣著相機(jī)與錄音睦裳,去河邊找鬼。 笑死撼唾,一個(gè)胖子當(dāng)著我的面吹牛廉邑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倒谷,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蛛蒙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了渤愁?” 一聲冷哼從身側(cè)響起牵祟,我...
    開(kāi)封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抖格,沒(méi)想到半個(gè)月后诺苹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雹拄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年收奔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滓玖。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡筹淫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情损姜,我是刑警寧澤饰剥,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站摧阅,受9級(jí)特大地震影響汰蓉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棒卷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一顾孽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧比规,春花似錦若厚、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至灾常,卻和暖如春霎冯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钞瀑。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工沈撞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雕什。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓缠俺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贷岸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壹士,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 爬取目標(biāo) 本文將提取貓眼電影 TOP100 排行榜的電影名稱、時(shí)間凰盔、評(píng)分墓卦、圖片等信息,URL 為http://ma...
    田旭1閱讀 1,629評(píng)論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)户敬、插件落剪、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,102評(píng)論 4 62
  • 昨天晚上預(yù)留了時(shí)間要寫的,居然忘記了尿庐。 看《解憂雜貨店》有點(diǎn)入迷忠怖。昨晚一直看到電子書砸下來(lái)也沒(méi)把我砸清醒的地步。不...
    圈圈o0閱讀 111評(píng)論 0 0
  • 昨天忙了一天抄瑟》财客戶接二連三的來(lái)。中午飯都沒(méi)吃好⌒猓基本都是老客戶骂维。最后看相算卦看到頭都有點(diǎn)疼了,確實(shí)比較辛苦贺纲。 晚上...
    崇修閱讀 378評(píng)論 0 0
  • 開(kāi)篇 當(dāng)我第一次離家里去另外一個(gè)城市打工的時(shí)候猴誊,臨走前父親對(duì)我說(shuō)了一句話潦刃,不管去哪里,都要努力做事懈叹,好好干活乖杠,多做...
    小衛(wèi)2013閱讀 491評(píng)論 3 1