python爬虫获取豆瓣正在热播电影

来源:互联网 发布:2016网络写手收入排行 编辑:程序博客网 时间:2024/04/29 02:23

热播地址: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 urllib2from HTMLParser import HTMLParserclass 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.moviesurl = '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|陈志发|林耀声 / 胡子彤 / 廖启智

参考http://www.maiziedu.com/wiki/crawler/example/

2 0
原创粉丝点击