[python爬虫之路day5]:实战之电影天堂2019精选电影爬取

**前言:**通过本次学习新掌握以下函数用法。
map(lambda x:x+3,5)
.startswith("ads ")
.strip() 除去前后空格
a.format(1)用其中的字符填充a中的{}

代码如下:

from lxml import etree
import requests
BASEURL="https://www.dytt8.net"
HEADERS={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"}

def get_details_url(url):
    response = requests.get(url, headers=HEADERS)
    text = response.content.decode('gbk','ignore')
    html = etree.HTML(text)
    detail_urls = html.xpath("//table[@class='tbspan']//a/@href")
    detail_urls = map(lambda urlw: BASEURL + urlw, detail_urls)
    return detail_urls
def parse_detail_page(url):
    mie={}
    response=requests.get(url,headers=HEADERS)
    text = response.content.decode('gbk', 'ignore')
    html = etree.HTML(text)
    title=html.xpath("//div[@class='title_all']//font[@color='#07519a']/text()")[0]
    mie["title"] = title
    zoome=html.xpath("//div[@id='Zoom']")[0]
    imgs=zoome.xpath(".//img/@src")
    cover=imgs[0]
    mie["cover"]=cover
    infos=zoome.xpath(".//text()")
    def parse_info(info,role):
        return info.replace(role,"").strip()
    for index,info in enumerate(infos):
        if info.startswith("◎年  代"):
            info=parse_info(info,"◎年  代")
            mie['year']=info
        elif info.startswith("◎产  地"):
            info=parse_info(info,"◎产  地")
            mie['make place'] = info
        elif info.startswith("◎类  别"):
            info=parse_info(info,"◎类  别")
            mie['catagory'] = info
        elif info.startswith("◎豆瓣评分"):
            info=parse_info(info,"◎豆瓣评分")
            mie['豆瓣评分'] = info
        elif info.startswith("◎片  长"):
            info=parse_info(info,"◎片  长")
            mie['片  长'] = info
        elif info.startswith("◎导  演"):
            info = parse_info(info, "◎导  演")
            mie['导  演'] = info
        elif info.startswith("◎主  演"):
            info = parse_info(info, "◎主  演")
            actors=[info]
            for x in range(index+1,len(infos)):
                actor=infos[x].strip()
                if actor.startswith("◎"):
                    break
                actors.append(actor)
            mie["actors"]=actors
        elif info.startswith("◎简  介"):
            info = parse_info(info, "◎简  介")
            progfiles = []
            for x in range(index +1,len(infos)):
                progfile=infos[x].strip()
                if progfile.startswith("◎获奖情况"):
                    break
                progfiles.append(progfile)
            mie["progfile"]=progfiles
    return mie
def spidera():
    headerurl="https://www.dytt8.net/html/gndy/dyzz/list_23_{}.html"
    movies=[]
    for x in range(1,4):
        url=headerurl.format(x)
        detail_urls=get_details_url(url)
        for detail_url in detail_urls:
            move=parse_detail_page(detail_url)
            movies.append(move)

if __name__ == '__main__':
    spidera()

运行结果:
以下为截取的部分结果:
{‘title’: ‘2019年历史战争《决战中途岛》BD国英双语双字’, ‘cover’: ‘https://extraimage.net/images/2020/01/11/c629673a2abc2f2d1f31d21f4c6e4d32.jpg’, ‘year’: ‘2019’, ‘make place’: ‘中国大陆/美国’, ‘catagory’: ‘剧情/历史/战争’, ‘豆瓣评分’: ‘7.8/10 from 87,337 users’, ‘片\u3000\u3000长’: ‘138分钟’, ‘导\u3000\u3000演’: ‘罗兰·艾默里奇 Roland Emmerich’, ‘actors’: [‘艾德·斯克林 Ed Skrein’, ‘帕特里克·威尔森 Patrick Wilson’, ‘伍迪·哈里森 Woody Harrelson’, ‘卢克·伊万斯 Luke Evans’, ‘丹尼斯·奎德 Dennis Quaid’, ‘曼迪·摩尔 Mandy Moore’, ‘亚历山大·路德韦格 Alexander Ludwig’, ‘艾伦·艾克哈特 Aaron Eckhart’, ‘达伦·克里斯 Darren Criss’, ‘尼克·乔纳斯 Nick Jonas’, ‘卢克·克莱恩坦克 Luke Kleintank’, ‘杰克·韦伯 Jake Weber’, ‘基恩·约翰逊 Keean Johnson’, ‘浅野忠信 Tadanobu Asano’, ‘大卫·休莱特 David Hewlett’, ‘马克·罗斯顿 Mark Rolston’, ‘布雷南·布朗 Brennan Brown’, ‘詹姆斯·卡佩内罗 James Carpinello’, ‘马修·麦考尔 Matthew MacCaull’, ‘格雷格·霍瓦尼西安 Greg Hovanessian’, ‘杰克·曼利 Jake Manley’, ‘杰弗里·布莱克 Geoffrey Blake’, ‘瑞秋·佩雷尔·佛斯基特 Rachael Perrell Fosket’, ‘卡梅伦·布罗德 Cameron Brodeur’, ‘杰克博·布莱尔 Jacob Blair’, ‘克里斯蒂·布鲁克 Christie Brooke’, ‘国村隼 Jun Kunimura’, ‘泰勒·艾略特·伯克 Tyler Elliot Burke’, ‘丰川悦司 Etsushi Toyokawa’, ‘艾梅伯·瓦尔斯 Amber Walls’, ‘莫妮卡·比卡罗娃 Monika Bicarova’, ‘托尼·克里斯托弗 Tony Christopher’, ‘加雷特·佐藤 Garret Sato’, ‘罗伯特·克鲁克斯 Robert Crooks’, ‘埃里克·戴维斯 Eric Davis’, ‘托马斯·瓦利埃 Thomas Vallieres’, ‘约翰·洛巴托 John Lobato’, ‘迪索·拉莫斯 Diezel Ramos’, ‘Kenny Leu’], ‘progfile’: [‘电影讲述的是第二次世界大战太平洋战争重要转折点——中途岛海战:经此一役,日本海军受到“降维打击”,美日海上实力反转,从而扭转了整个太平洋战场的局势。影片通过参战士兵和飞行员一个个鲜活的故事,带领观众逐步进入1942年6月初发生在太平洋中途岛附近那场令人难以置信的战争……’, ‘【下载地址】’, ‘’, ‘磁力链点击 决战中途岛.BD.1080p.国英双语双字.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘ftp://ygdy8:[email protected]:4003/阳光电影www.ygdy8.com.决战中途岛.BD.1080p.国英双语双字.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]}, {‘title’: ‘2019年剧情传记《洛瑞太太和她的儿子》BD中英双字幕’, ‘cover’: ‘https://extraimage.net/images/2020/02/07/6d05b7c2182b08406f5c067cfecca491.jpg’, ‘year’: ‘2019’, ‘make place’: ‘英国’, ‘catagory’: ‘剧情 / 传记 / 历史’, ‘豆瓣评分’: ‘7.6/10 from 290 users’, ‘片\u3000\u3000长’: ‘91分钟’, ‘导\u3000\u3000演’: ‘Adrian Noble’, ‘actors’: [‘瓦妮莎·雷德格瑞夫 Vanessa Redgrave’, ‘蒂莫西·斯波 Timothy Spall’, ‘史蒂芬·洛德 Stephen Lord’, ‘温迪·摩根 Wendy Morgan’, ‘迈尔斯·基奥治 Michael Keogh’, ‘Joanne Pearce’, ‘David Schaal’, ‘John Alan Roberts’, ‘Jon Furlong’, ‘Paul Bergquist’, ‘Laurence Mills’, ‘Kíla Lord Cassidy’, ‘Rose Noble’, ‘Jennifer Banks’, ‘Giselle Cullinane’], ‘progfile’: [‘他那咄咄逼人的控制狂母亲’, ‘成就了二十世纪英国最伟大的画家之一’, ‘L.S. 洛瑞是二十世纪英国最伟大的国民画家之一,独特的画风深受英国民众喜爱。但是他的画作在早期却遭艺术评论家嘲笑为出自儿童之手,因为他笔下的人物,头大大,身体细细,就像一根根的火柴棒一样,被称为“火柴男人”。虽然说洛瑞的母亲伊莉莎白女士,一生都在阻扰他的艺术事业,但是洛瑞之所以能够成为优秀的画家,却不得不归功于他的母亲。在他父亲去世之后,洛瑞负责照顾卧病在床的母亲,每每等到她入睡了才在阁楼开始作画,全心全意,甘之如饴。抑鬱寡欢的伊莉莎白总是叨叨念著她对儿子的不满与失望,洛瑞却终其一生都在追寻著如何让母亲快乐,他的生活与他的画作都渴望著母亲的认同。本片由知名皇家莎士比亚剧场前任总监亚德里安.诺布尔担任导演,找来坎城影帝提摩西司伯饰演这位伟大的画家,以及坎城影后凡妮莎蕾格烈芙饰演控制狂的母亲。两人精湛的演技,演活了这对讽刺却又带幽默的母子。’, ‘「烟囱林立以及冒著黑烟的天空,火柴男子出现在一成不变的工业景观裡踽踽独行。」洛瑞的作品纪录了后工业化的英国城市景观,以及人们的疏离,直到现在,仍能引起共鸣。他在晚年被皇家艺术学会及曼彻斯特学院延揽,作品曾以370万英镑高价售出。他多次拒绝了英国首相颁发的勳章,并拒绝了勳爵的封号。’, ‘【下载地址】’, ‘’, ‘磁力链点击 洛瑞太太和她的儿子.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘ftp://ygdy8:[email protected]:3002/阳光电影www.ygdy8.com.洛瑞太太和她的儿子.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]}, {‘title’: ‘2019年剧情传记《叛徒/黑金叛徒》BD中字’, ‘cover’: ‘https://extraimage.net/images/2020/02/04/aba90630040057fc651a1531272628ed.jpg’, ‘year’: ‘2019’, ‘make place’: ‘意大利,法国,巴西,德国’, ‘catagory’: ‘剧情 / 传记 / 犯罪’, ‘豆瓣评分’: ‘7.3/10 from 3,820 users’, ‘片\u3000\u3000长’: ‘135分钟’, ‘导\u3000\u3000演’: ‘马可·贝洛基奥 Marco Bellocchio’, ‘actors’: [‘皮耶尔弗兰切斯科·法维诺 Pierfrancesco Favino’, ‘马丽娅·费尔南达·康基多 Maria Fernanda Cândido’, ‘路易吉·洛·卡肖 Luigi Lo Cascio’, ‘福斯托·鲁索·阿莱西 Fausto Russo Alesi’, ‘尼诺·波尔齐奥 Nino Porzio’, ‘Alessio Praticò’, ‘Gabriele Arena’, ‘Fabrizio Ferracane’, ‘Jacopo Garfagnoli’, ‘Patrick Simons’, ‘Marco Gambino’, ‘Calì Nicola’, ‘Goffredo Maria Bruno’, ‘Massimiliano Ubaldi’, ‘Marilina Marino’, ‘Nunzia Lo Presti’], ‘progfile’: [‘本片根据意大利真实事件改编而成。上世纪80年代初期,黑帮首脑多玛索·布西达从意大利移居巴西,然而远在意大利的自己的哥哥与孩子却相继被黑帮团伙杀害。为了惩治凶手,他开始与意大利警方合作,在两方的不断努力下,多玛索·布西达不仅抓住了杀害自己亲人的幕后黑手,并将意大利盘根错节的黑帮团伙连根拔起……’]}, {‘title’: ‘2019年惊悚动作《格兰德岛》BD中英双字幕’, ‘cover’: ‘https://extraimage.net/images/2020/01/29/ba8f6fdb69026c2911060c0a1608cb4d.jpg’, ‘year’: ‘2019’, ‘make place’: ‘美国’, ‘catagory’: ‘动作 / 惊悚’, ‘豆瓣评分’: ‘4.4/10 from 136 users’, ‘片\u3000\u3000长’: ‘97分钟’, ‘导\u3000\u3000演’: ‘斯蒂芬·S·坎帕内利 Stephen S. Campanelli’, ‘actors’: [‘尼古拉斯·凯奇 Nicolas Cage’, ‘凯尔希·格兰莫 Kelsey Grammer’, ‘祖蕾·亨奥 Zulay Henao’, ‘卢克·本沃德 Luke Benward’, ‘卡迪·斯特瑞兰德 KaDee Strickland’, ‘艾米丽·玛丽·帕尔默 Emily Marie Palmer’, ‘奥利弗·特雷韦纳 Oliver Trevena’, ‘比阿特丽丝·埃尔南德斯 Beatrice Hernandez’, ‘Isabella Grace Roark’, ‘Haley Milsap’], ‘progfile’: [‘一位年轻父亲遭人诬陷为谋杀案罪犯,为了证明自己的清白,他必须要在自己经历过的一系列恐怖而离奇的事件中寻找线索和答案。’, ‘本片由曾经执导过《绝命盗窃》并多次与克林特·伊斯特伍德合作的导演Stephen S. Campanelli和新晋导演Iver William Jallah联合执导,尼古拉斯·凯奇宣布加盟该片。’, ‘【下载地址】’, ‘’, ‘磁力链点击 格兰德岛.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘ftp://ygdy8:[email protected]:6006/阳光电影www.ygdy8.com.格兰德岛.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]}, {‘title’: ‘2019年惊悚《葛蕾丝的坠落》BD中英双字幕’, ‘cover’: ‘https://lookimg.com/images/2020/02/06/aQjFj.jpg’, ‘year’: ‘2020’, ‘make place’: ‘美国’, ‘catagory’: ‘惊悚’, ‘豆瓣评分’: ‘6.3/10 from 841 users’, ‘片\u3000\u3000长’: ‘120分钟’, ‘导\u3000\u3000演’: ‘泰勒·派瑞 Tyler Perry’, ‘actors’: [‘亚德里安·帕斯达 Adrian Pasdar’, ‘泰勒·派瑞 Tyler Perry’, ‘西西莉·泰森 Cicely Tyson’, ‘菲利西亚·拉斯海德 Phylicia Rashad’, ‘布莱莎·韦伯 Bresha Webb’, ‘麦卡德·布鲁克斯 Mehcad Brooks’, ‘桑德拉·埃利斯·拉弗蒂 Sandra Ellis Lafferty’, ‘内森·安德森 Nathan Anderson’, ‘迈克尔·罗斯 Michael Rose’, ‘Crystal Fox’, ‘Walter Fauntleroy’, ‘James William Ballard’, ‘Matthew Law’, ‘James Healy Jr.’, ‘Frances Mitchell’], ‘progfile’: [‘影片讲述葛蕾丝·华特斯经历前夫出轨的情伤后,终于靠着新恋情重新站起。谁知美好表象下藏有无数秘密,葛蕾丝在发现真相之后,身心受创的她开始反击。’, ‘【下载地址】’, ‘’, ‘磁力链点击 葛蕾丝的坠落.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘ftp://ygdy8:[email protected]:4002/阳光电影www.ygdy8.com.葛蕾丝的坠落.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]}, {‘title’: ‘2019年惊悚动作《21座桥/暴走曼哈顿》BD中英双字幕’, ‘cover’: ‘https://lookimg.com/images/2020/02/06/aQtKo.jpg’, ‘year’: ‘2019’, ‘make place’: ‘美国’, ‘catagory’: ‘动作 / 惊悚 / 犯罪’, ‘豆瓣评分’: ‘6.5/10 from 1,158 users’, ‘片\u3000\u3000长’: ‘99分钟’, ‘导\u3000\u3000演’: ‘布莱恩·柯克 Brian Kirk’, ‘actors’: [‘查德维克·博斯曼 Chadwick Boseman’, ‘西耶娜·米勒 Sienna Miller’, ‘泰勒·克奇 Taylor Kitsch’, ‘J·K·西蒙斯 J.K. Simmons’, ‘凯斯·大卫 Keith David’, ‘史蒂芬·詹姆士 Stephan James’, ‘凯蒂·麦克莱伦 Katie McClellan’, ‘莎伊娜·瑞恩 Shayna Ryan’, ‘加里·卡尔 Gary Carr’, ‘维多利亚·卡塔赫纳 Victoria Cartagena’, ‘戴尔·帕文斯基 Dale Pavinski’, ‘托比·海明威 Toby Hemingway’, ‘克里斯蒂安·艾赛亚 Kristian Isaiah’, ‘路易斯·坎瑟米 Louis Cancelmi’, ‘乔恩·道格拉斯·雷尼 Jon Douglas Rainey’, ‘杰拉德·瓦德 Jared Ward’, ‘莫洛克·奥马里 Morocco Omari’, ‘苏泽特·古恩 Suzette Gunn’, ‘迈克尔·J·克雷米 Michael J. Kraycik’, ‘迈克尔·J·莱昂斯 Michael J. Lyons’], ‘progfile’: [‘影片风格据称类似《局内人》和《亡命天涯》,博斯曼饰一个蒙羞的纽约警局警探,因为被卷入一场全城范围的追捕某警察杀手的行动,获得了赎罪机会——他发现了一起巨大的阴谋:自己的警察同事可能跟一个犯罪帝国有关联。他必须决定到底要追捕谁,而谁其实又在追捕他。在这起行动中,曼哈顿在历史上第一次全境封锁,岛上与外界联系的17座桥全部禁止进出。’, ‘【下载地址】’, ‘’, ‘磁力链点击 21座桥.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘ftp://ygdy8:[email protected]:7053/阳光电影www.ygdy8.com.21座桥.BD.1080p.中英双字幕.mkv’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’]},

你可能感兴趣的:(爬虫小白学习)